2014-02-17 4 views
-2

Java дает мне эту ошибку. Я работал некоторое время, и я в тупике. Я не могу понять, почему java не может найти сумму? Заранее спасибо. :Почему Java не может найти мой символ?

C:\Users\Keegan\Documents\TwoNumbers.java:70: error: cannot find symbol 

System.out.println(sum); 
          ^
symbol: variable sum 

location: class TwoNumbers 

1 error  

Вот код:

public class TwoNumbers { 

    /*** Class Constants ***/ 

    private final double DEFAULT_NUMBER1 = 10; 
    private final double DEFAULT_NUMBER2 = 15; 

    /*** Class Variables -- State of the object ***/ 

    private double number1; 
    private double number2; 

    /*** Constructor Methods -- Set the state of the object double n1, double n2***/ 

    public TwoNumbers() { 

     number1 = DEFAULT_NUMBER1; 
     number2 = DEFAULT_NUMBER2; 
    } 

    public void setNumbers (double n1, double n2) { 

     this.number1=n1; 

     this.number2=n2; 
    } 

    /*** Accessor methods ***/ 

    public double getNumber1() { 

     return number1; 
    } 

    public double getNumber2() { 

     return number2; 

    } 

    public double sum(double n1, double n2) { 

     double sum; 

     sum = n1 + n2; 

     return sum; 
    } 


    /*** Transformer/Mutator Methods ***/ 

    public static void main(String args[]) { 

     System.out.println(sum); 
     System.out.println(""); 
     System.out.println(""); 
     System.out.println(""); 
     System.out.println(""); 
     System.out.println(""); 
     System.out.println(""); 
    } 

}

+4

Посмотрите на область изменения. –

ответ

3

sum определяется как локальной переменной в методе sum, он не имеет контекста (или не могут быть доступны) из стороны этого метода ...

public double sum(double n1, double n2) { 
    double sum; 

Основываясь на том, что ваш код пытается сделать, y НУ не должны пытаться получить доступ к нему каким-либо образом, вместо этого вы должны просто использовать экземпляр TwoNumbers для печати результата ...

System.out.println(new TwoNumbers().sum(1, 1)); 

, например ...

+1

И даже если это возможно, ничто не вызвало метод, который бы вычислил его значение. –

+0

@SotiriosDelimanolis И на основе предоставленного кода ничего не должно, метод принимает два значения и возвращает сумму, поэтому нет необходимости поддерживать результат вне контекста метода в любом случае ... – MadProgrammer

+0

Спасибо! Я получил свой код для работы. Кажется, такая простая проблема, но я действительно не мог понять это. – user3317295

2

Поскольку сфера применения переменная сумма видна только в том способе, в котором вы ее объявили.

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

public double sum(double n1, double n2) { 
    double sum; 
    sum = n1 + n2; 
    return sum; 
} // sum is no longer visible to anything else 
// the variable was used and garbage collected within the sum() method. 
1

Переменная «сумма» определяется как локальная переменная внутри метода «сумма». В функции «main()», где происходит ошибка, единственное видимое имя «sum» - это функция-член. Чтобы вызвать его, вам нужно создать экземпляр, а также использовать круглые скобки с такими параметрами:

public static void main(String args[]) { 
    TwoNumbers instance = new TwoNumbers(); 
    System.out.println(instance.sum(1, 2)); // prints 3 
    System.out.println(""); 
    System.out.println(""); 
    System.out.println(""); 
    System.out.println(""); 
    System.out.println(""); 
    System.out.println(""); 
} 
Смежные вопросы