Tichaona J Ответов: 4

Нерешенная проблема компиляции: ответ не может быть разрешен для переменной


С моим нижеприведенным кодом, почему ответ не решается?

<pre>package calculate;

import java.io.IOException;

public class Subtract {

	public int sub(int nb11, int nb21) throws IOException {
		
		
		
		if (nb11 > nb21){		
			
			int answer = Integer.parseInt(null, nb11 - nb21);
			
			
		}else 
		{
			
			 System.out.println("You can not subtract a large number from a small number.");
	         
				String[] args1 = null;
				Cal.main(args1 );	
			
		}		
		
		
		return answer;
	}

}





Что я уже пробовал:

Попробовал создать локальную переменную и инициализировал ее, но все равно результат вычисления не передается в ответ.

4 Ответов

Рейтинг:
32

CPallini

Проблема (возможно, одна из проблем) вашего кода заключается в следующем answerсфера действия: он "живет" внутри if блок, так что

return answer;
утверждение - это просто ошибка (нет answer переменная в области действия).


Рейтинг:
22

Richard MacCutchan

Как говорит Карло, это вопрос масштаба. Вы должны объявить переменную вне if заявление. Также призыв к parseInt это не имеет смысла, так как вы не имеете дело со строковым значением.

public int sub(int nb11, int nb21) throws IOException {
    int answer = -1;
    if (nb11 > nb21){
        answer = nb11 - nb21;
    }
    else
// ...


Рейтинг:
1

Patrice T

Посмотри на свой код !
Вы определяете и устанавливаете значение answer только при этом условии (nb11 > nb21) проверяется.

Мой лучший совет - использовать отладчик, чтобы увидеть и понять, что делает ваш код до ошибки.

http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.html[^]
https://www.jetbrains.com/idea/help/debugging-your-first-java-application.html[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.


Рейтинг:
0

Tichaona J

Большое спасибо, проблема была в том, как я объявил свои переменные. Не применял инкапсуляцию....Ниже работал :)


<pre>package calculate;

import java.io.IOException;

public class Subtract {
	
	
	private int answer;
	
	
	public int getAnswer(){
		
		return answer;		
		
	}
	
	public void setAnswer(int a){
		
		answer = a;
	}
	

	public int sub(int nb11, int nb21) throws IOException {
		
		
		
		if (nb11 > nb21){		
			
			Subtract.this.answer =  nb11 - nb21;
			
			
		}else 
		{
			
			 System.out.println("You can not subtract a large number from a small number.");
	         
				String[] args1 = null;
				Cal.main(args1 );	
			
		}		
		
		
		
		
		return answer;
	}
	

}