Оператор If-then-else не работает

#java

#java

Вопрос:

У меня есть основной класс, который выглядит следующим образом:

 class Main {
    public static void main (String[] args) {
        Mobil one = new Mobil ("xxxxxx", "yyyyyy", 00000001, true);
        Mobil two = new Mobil ("yyyyyy", "xxxxxx", 10245624, false);

        one.touchcontrol();
        two.touchcontrol();
        }
}
  

И у меня есть этот класс Mobil:

 class Mobil {
    String type;
    String manufactureat;
    int modellnumber;
    boolean touchtype;

public Mobil (String manufacturer, String inittype, int number, boolean touch) {
        manufacturer = manufactureat;
        inittype = type;
        number = modellnumber;
        touch = touchtype;
}
public void touchcontrol() {
    if (touchtype == false) 
    {
        System.out.println("This model, has not got Touchscreen!");
    }
    else
    {
        System.out.println("This model, has Touchscreen!");
    }
}
  

Но когда я запускаю программу и вызываю one.touchcontrol(); и two.touchcontrol(); , это показывает, что ни у одной модели нет сенсорного экрана. Я не знаю, что я пропустил.

Ответ №1:

Вам нужно поменять местами назначения переменных в конструкторе.

 manufactureat = manufacturer;
type = inittype;
modellnumber = number;
touchtype = touch;
  

При присваивании переменных в Java (и практически во всех других языках) левая рука извлекает значение правой руки.

Смотрите также:

Комментарии:

1. Это может помочь провести различие между переменными экземпляра и локальными переменными, используя this.x для переменных экземпляра или делая так, чтобы все переменные экземпляра заканчивались на _

2. @Mark Я бы предпочел this использовать префикс / суффикс имени. Но это только запутало бы операционную систему в этот момент. Пусть он сначала привыкнет к основам языка 🙂

Ответ №2:

Вы неправильно присваиваете значения переменным в вашем конструкторе…

 public Mobil (String manufacturer, String inittype, int number, boolean touch) {
        manufacturer = manufactureat; // should be  manufactureat = manufacturer;
        inittype = type;               //same problem
        number = modellnumber;         // same here
        touch = touchtype;               // and here
}