我正在尝试做一个简单的if / else语句但由于某种原因我遇到了运行时错误

时间:2013-02-06 01:30:58

标签: java runtime-error

我将这段代码用于一个简单的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);
        }

    }
}

这是我收到的消息:警告:永远不会读取本地变量答案

2 个答案:

答案 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+yx>y,如果x<y设置为answer=x-y,则设置为x=y。但如果x怎么办?在这种情况下,没有什么可以告诉计算机该做什么。尽管y对于您在程序中输入的特定输入可能不等于x,但Java现在给您一个错误消息,希望您现在可以轻松地获取错误,如果有人首先输入相等的yx>y值,那么很久以后就会被修复。

您可以通过将x>=y更改为x<yx<=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;