我将这段代码用于一个简单的if / else语句,如果x大于y,它将对答案求和,如果x不大于y,则将它减去!出于某种原因,我遇到了运行时错误。
任何人都可以帮我吗? 代码是:
import java.util.Scanner;
public class calculation
{
public static void main(String[] args)
{
int x,y,answer;
Scanner kb = new Scanner(System.in);
System.out.println(" Enter x & Y " );
x = kb.nextInt();
y = kb.nextInt();
if (x > y) {
answer = (x + y);
}
else if (x < y) {
answer=(x-y);
}
}
}
这是我收到的消息:警告:永远不会读取本地变量答案
答案 0 :(得分:2)
如果你得到的错误是这样的:
Foo.java:23: error: variable answer might not have been initialized
System.out.print("answer is " + Integer.toString(answer));
然后问题是answer
可能没有设置任何值,并且计算机放弃并打印错误消息,而不是可能返回垃圾。
answer
怎么没有设置值?如果answer
,则设置x+y
为x>y
,如果x<y
设置为answer=x-y
,则设置为x=y
。但如果x
怎么办?在这种情况下,没有什么可以告诉计算机该做什么。尽管y
对于您在程序中输入的特定输入可能不等于x
,但Java现在给您一个错误消息,希望您现在可以轻松地获取错误,如果有人首先输入相等的y
和x>y
值,那么很久以后就会被修复。
您可以通过将x>=y
更改为x<y
,x<=y
更改为x==y
,或添加第三个Warning: The local variable answer is never read
案例来解决此问题。
如果您收到的警告是
answer
然后你需要添加一个以某种方式使用System.out.print("answer is " + Integer.toString(answer));
的语句,例如在方法的末尾添加它:
answer
但是,请注意,这只是一个警告,而不是错误,所以即使弹出消息,它也应该运行得很好!当然,您将无法看到answer
获得的值,因为正如警告所说,{{1}}永远不会在当前代码中被读取。
答案 1 :(得分:0)
int x,y, answer;
Scanner kb = new Scanner(System.in);
System.out.println(" Enter x & Y " );
x= kb.nextInt();
y= kb.nextInt();
if (x>y)
answer= (x+y);
else
answer=(x-y);
System.out.println("the answer is " + answer);
并且因为您使用扫描程序所以您应该导入java.util.Scanner;