#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
}