#java #class #inheritance #methods
#java #класс #наследование #методы
Вопрос:
Я не понимаю, как мой компилятор не может найти класс Weight
, учитывая, что я уже не создал его в своем public boolean checkWeight
методе? Компилятор указывает на строку:
`Weight first = new Weight();`
и
`Weight second = new Weight();`
public class Guard {
int stashWeight;
public Guard ( int maxWeight ) {
this.stashWeight = maxWeight;
}
public boolean checkWeight (Weight maxWeight) {
if ( maxWeight.weight >= stashWeight ) {
return true;
} else {
return false;
}
}
public static void main (String[] args ) {
Weight first = new Weight();
first.weight = 3000;
Weight second = new Weight();
second.weight = 120;
Guard grams = new Guard(450);
System.out.println("Officer, can I come in?");
boolean canFirstManGo = grams.checkWeight(first);
System.out.println(canFirstManGo);
System.out.println();
System.out.println("Officer, how about me?");
boolean canSecondManGo = grams.checkWeight(second);
System.out.println(canSecondManGo);
}
}
Комментарии:
1. Вы импортировали правильный
Weight
класс?2. какова ваша весовая категория
3. Возможно, я отключился. По какой-то неизвестной причине мой разум новичка подумал, что я уже определил свою весовую категорию, когда я сделал: public boolean checkWeight (максимальный вес). Спасибо, что предупредили всех
Ответ №1:
вы должны определить Weight
класс следующим образом:
public class Weight {
public int weight;
public int getWeight() {
return weight;
}
public void setWeight(int weight) {
this.weight = weight;
}
}
Вывод:
Officer, can I come in?
true
Officer, how about me?
false
Или импортируйте свой Weight
класс, используя import
ключевое слово.
Ответ №2:
ваш весовой класс отсутствует в вашем коде, Смотрите приведенный ниже код
class Weight {
public int weight;
public int getWeight() {
return weight;
}
public void setWeight(int weight) {
this.weight = weight;
}
}
public class Guard {
int stashWeight;
public Guard(int maxWeight) {
this.stashWeight = maxWeight;
}
public boolean checkWeight(Weight maxWeight) {
if (maxWeight.weight >= stashWeight) {
return true;
} else {
return false;
}
}
public static void main(String[] args) {
Weight first = new Weight();
first.weight = 3000;
Weight second = new Weight();
second.weight = 120;
Guard grams = new Guard(450);
System.out.println("Officer, can I come in?");
boolean canFirstManGo = grams.checkWeight(first);
System.out.println(canFirstManGo);
System.out.println();
System.out.println("Officer, how about me?");
boolean canSecondManGo = grams.checkWeight(second);
System.out.println(canSecondManGo);
}
}
вывод
**
Officer, can I come in?
true
Officer, how about me?
false
**
Ответ №3:
Ваша весовая категория находится в другом пакете? Какой модификатор доступа к весовому классу?
Пожалуйста, проверьте выше и посмотрите в документе ниже.
Ответ №4:
- Параметр метода «MaxWeight» имеет тип «Weight», для которого Java не может найти определение для разрешения зависимостей вашей программы. Неспособность найти класс по classpath приведет к ошибке «Не удается найти символ». Возможно, вы захотите определить класс «Weight» и импортировать его, как вам ответили другие.
- Вам действительно нужен класс «Weight»? Вы просто сравниваете переданный аргумент с «защитным» значением stashWeight.
Ваш открытый метод может быть просто:
public boolean checkWeight(int maxWeight) {
return maxWeight >= stashWeight;
}
И основной метод может быть обновлен как:
public static void main(String[] args) {
int firstWeight = 3000;
int secondWeight = 120;
Guard grams = new Guard(450);
System.out.println("Officer, can I come in?");
boolean canFirstManGo = grams.checkWeight(firstWeight);
System.out.println(canFirstManGo);
System.out.println();
System.out.println("Officer, how about me?");
boolean canSecondManGo = grams.checkWeight(secondWeight);
System.out.println(canSecondManGo);
}