[Ошибка Java] Не могу найти ничего с именем "число" - PullRequest
0 голосов
/ 25 января 2011

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

//store numbers in memory
class memStorage {
  float storedNum1, storedNum2;

  //constructor
  void Memory(float num1, float num2){
    storedNum1 = num1;
    storedNum2 = num2;
  }

  //Store numbers and call them when needed
  //Store the first number
  void mem1(float num1){
    num1 = number;
    println("number 1 has been stored");
  }

  //Store the second number
  void mem2(float num2){
    num2 = number;
    println("number 2 has been stored");
  }

}

void processNumber(char number){
  //Instantiate memory storage class and execute method
  memStorage storedNum1 = new memStorage();
  storedNum1.mem1();
  //print keypressed numbers
  println(storedNum1);
}

Когда я запускаю скетч в процессе обработки, он выдает ошибку, которая говорит: Cannot find anything named "number"

Я как бы застрял в том, что я должен сделать, чтобы заставить это работать.Любой совет приветствуется.

Ответы [ 4 ]

2 голосов
/ 25 января 2011

Здесь множество проблем с синтаксисом.У вас не только 1 проблема, у вас много.Простое исправление того, о котором вы спрашивали, приведет к увеличению примерно на 5 - 10 баллов.

Сначала я прокомментирую их в строке.то, что кажется вашим намерением.

public class MemStorage {
    private float storedNum1;
    private float storedNum2;

    public MemStorage(float num1, float num2){
        this.storedNum1 = num1;
        this.storedNum2 = num2;
    }

    public void setNum1(float num1){
        this.storedNum1 = num1;
        System.out.println("Number 1 has been stored.");
    }

    public void setNum2(float num2){
        this.storedNum2 = num2;
        System.out.println("Number 2 has been stored.");
    }

    public float getNum1(){
        return this.storedNum1;
    }

    public float getNum2(){
        return this.storedNum2;
    }

    // Hand Test
    public static void main(String[] args){
        MemStorage memStorage = new MemStorage(0,0);
        memStorage.setNum1(1.23454f);
        System.out.println(memStorage.getNum1());
    }
}

Вам действительно нужно вернуться к основам и начать с учебника для начинающих.

0 голосов
/ 25 января 2011

Кажется, что число является локальной переменной и что ее нельзя увидеть за пределами блока метода.

0 голосов
/ 25 января 2011

, если вы посмотрите ближе на

 num1 = number;

и

 num2 = number;

Вы увидите, что ранее не было объявления номера (если вы не опубликовали соответствующий код?)

также я думаю, что вы хотели сделать что-то вроде

private number = 0;       
void mem1(float num1){
   number = num1;
   println("number 1 has been stored in private field number");
}

ваш код копирует значение числа в локальную переменную num1, которая будет уничтожена при выходе из функции: ничего не будет сохранено.

0 голосов
/ 25 января 2011

Сначала поместите функцию processNumber в класс memStorage.Возможно, вы захотите преобразовать переменную 'number' как переменную экземпляра вместе с сохраненными значениямиNum1 и StorageNum2.И в-третьих, создайте функцию main () внутри класса, а затем создайте экземпляр класса memStorage и вызовите функцию processNumber ().И в-четвертых, конструктор ДОЛЖЕН быть точно таким же именем, что и имя класса.Измените его на memStorage.

Кроме того, функции mem1 и mem2 ничего не сохраняют в переменной экземпляра.После выхода из функции переменные num1 и num2 исчезнут.Замените 'num1' и 'num2' на StorageNum1 или StorageNum2.

Вам необходимо изучить и понять концепцию объектно-ориентированной парадигмы.

...