Как бы вы написали конструктор, который проверяет, что передаваемый массив имеет ту же длину, что и переменная экземпляра в классе? - PullRequest
0 голосов
/ 26 июня 2019

Мне нужно создать класс, который инициализирует переменную экземпляра в нем. В операторе if я получаю ошибку несоответствия типов: невозможно преобразовать из int в логическое значение.

public class ProccessForm {

    private String UserInfo[];

    public ProccessForm(String[] UserInfo) {
        UserInfo = new String[6];

        if(UserInfo.length){


        }
    }

Ответы [ 2 ]

1 голос
/ 26 июня 2019
// if length of array passed does not equal length of current array    
if (UserInfo.length != this.length) { 

    // do this

}

Прямо сейчас в вашем операторе if UserInfo.length возвращает целое число, если операторы имеют дело с логикой Boolean, поэтому вам нужно использовать условный оператор, такой как (<, >, <=, >=, ==, or !=), при работе с примитивами.

0 голосов
/ 26 июня 2019

Вы получаете ошибку несоответствия типов , потому что вы пытаетесь сравнить значение int со значением boolean.Поле примитивных массивов length возвращает тип данных int, а блоки if оценивают значение boolean, поэтому вам необходимо сравнить его с другим объектом того же необработанного типа.Узнайте больше о операторах if-then и if-then-else , а также Arrays .

Следующий код должен показать вам, как должен выглядеть ваш код, но здесьЕсть еще несколько проблем с вашим кодом, которые необходимо устранить.

public class ProcessForm {

    private String[] userInfo = new String[6];

    public ProcessForm(String[] userInfo) {

        if (this.userInfo.length == userInfo.length) {

            // Do something here...
        }
    }
}
  • Вы должны придерживаться стандартного соглашения о наименовании Java .
  • Вытакже была опечатка в имени класса;процесс пишется с одним c .
  • Java не использует C-style объявлений массива, поэтому вы должны объявить свою переменную следующим образом: String[] userInfo вместо String userInfo[] как в языке C.
  • Нет необходимости инициализировать поле класса внутри конструктора, когда вы не используете значения параметров в процессе инициализации.Вы можете просто объявить и инициализировать его в одной строке.
  • Не забывайте всегда использовать ключевое слово this, если вы хотите обратиться к полям класса, имена которых совпадают с именами локальных переменных, в противном случае вы будете обращаться к локальным переменным.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...