Как исправить «ошибку: не удается найти символ» при создании объекта?

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

  1. Параметр метода «MaxWeight» имеет тип «Weight», для которого Java не может найти определение для разрешения зависимостей вашей программы. Неспособность найти класс по classpath приведет к ошибке «Не удается найти символ». Возможно, вы захотите определить класс «Weight» и импортировать его, как вам ответили другие.
  2. Вам действительно нужен класс «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);

}