-2

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

    }
}

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

4

2 回答 2

2

如果您遇到的错误是这样的:

Foo.java:23: error: variable answer might not have been initialized
        System.out.print("answer is " + Integer.toString(answer));

那么问题是answer可能没有设置任何值,并且计算机放弃并打印错误消息而不是可能返回垃圾。

怎么answer不能有一个值集?你设置answerx+yif x>y,如果x<y你设置answer=x-y; 但如果x=y?没有什么可以告诉计算机在这种情况下该做什么。尽管对于您在程序中键入的特定输入x可能不等于输入和y的相等值。xy

您可以通过更改x>yx>=y、 或或添加第三种情况x<y来解决此问题。x<=yx==y


如果您收到的警告是

Warning: The local variable answer is never read

然后你需要添加一个answer以某种方式使用的语句,例如在方法的末尾添加这个:

System.out.print("answer is " + Integer.toString(answer));

但是,请注意,这只是一个警告,而不是错误,因此即使弹出消息,它也应该运行良好——试试吧!当然,您将无法看到answer得到了什么值,因为正如警告所说,answer在当前代码中永远不会读取。

于 2013-02-06T01:46:45.923 回答
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;

于 2013-02-06T01:55:21.493 回答