Java程序:可能尚未初始化变量和

时间:2014-10-17 01:45:52

标签: java command-prompt

创建一个简单的Java程序来添加2个整数(尚未完成)。我特别希望对我的变量“sum”有所帮助。命令提示符表明它可能尚未初始化,

enter image description here

我在“if语句”中定义了sum。我还应该如何定义或者我在这里做错了什么?非常感谢任何帮助!

import java.util.Scanner;

public class Calculator {
    public static void main(String[] args){
        //Objective: Calculate whole numbers to add, subtract, divide and multiply
        Scanner kbd1 = new Scanner(System.in);
        Scanner kbd2 = new Scanner(System.in);

        int num1, num2, sum;

        System.out.println("Enter two whole numbers: ");
        num1 = kbd1.nextInt();
        num2 = kbd2.nextInt();

        System.out.println("Now what would you like to do with these numbers? (Please input add, subtract, multiply, or divide)");
        Scanner oper = new Scanner(System.in);
        String operation;
        operation = oper.nextLine();

        if (operation == "add" || operation == "Add")
        {
            sum = num1 + num2;
        }
else
        if (operation == "subtract" || operation == "Subtract")
        {
            if (num1 > num2) {
                sum = num1 - num2;
            } else {
                sum = num2 - num1;
            }
        }
else
        if (operation == "multiply" || operation == "Multiply")
        {
            sum = num1 * num2;
        }
else
        if (operation == "divide" || operation == "Divide")
        {
            sum = num1 / num2;
        }

        System.out.println("The answer is: " + "/n" + sum);
    }
}

更新:

基于Sotirios Delimanolis,getlost和其他答案:

import java.util.Scanner;

public class Calculator {
    public static void main(String[] args){
        //Objective: Calculate whole numbers to add, subtract, divide and multiply
        Scanner kbd1 = new Scanner(System.in);
        Scanner kbd2 = new Scanner(System.in);

        int num1, num2, sum;


        System.out.println("Enter two whole numbers: ");
        num1 = kbd1.nextInt();
        num2 = kbd2.nextInt();

        System.out.println("Now what would you like to do with these numbers? (Please input add, subtract, multiply, or divide)");
        Scanner oper = new Scanner(System.in);
        String operation;
        operation = oper.nextLine();

        if (operation.equals("add"))
        {
            sum = num1 + num2;
        }
else
        if (operation.equals("subtract"))
        {
            if (num1 > num2) {
                sum = num1 - num2;
            } else {
                sum = num2 - num1;
            }
        }
else
        if (operation.equals("multiply"))
        {
            sum = num1 * num2;
        }
else
        if (operation.equals("divide"))
        {
            sum = num1 / num2;
        }
else
        {sum = 0;}


        System.out.println("The answer is: " + "/n" + sum);
    }
}

这似乎现在起作用,我不得不比较字符串,而不是从用户输入中显示明确的绝对值。谢谢你们!

2 个答案:

答案 0 :(得分:2)

System.out.println("The answer is: " + "/n" + sum);

因为你没有初始化int sum;你不能让他们总结以初始化内部条件

例如

int y;
if(condition not true){
   y=10;
}
System.out.println(y);

你的代码也是如此。如果你没有初始化会怎么样?

您可以通过初始化sum

来解决问题
int sum=0;

还有一件事 不要使用

operation == "add"

用于比较字符串 你应该使用

operation.equals("add")

答案 1 :(得分:1)

正如@SotirosDelimanolis所建议的那样,有一条执行路径,其中sum没有得到一个值(即,if中任何一个中的任何一个测试都不成立)。
一个解决方法是按照@getlost的建议去做;另一个是添加最终else子句,如果sum没有成功,它将执行适合if的任何内容。

相关问题