为什么说变量没有初始化?

时间:2016-08-19 14:01:14

标签: java

package mmm;
import java.util.Scanner;
public class Hi{
    public static void main(String args[]){
        int num1, num2, result, choice;
        Scanner abhi = new Scanner(System.in);
        System.out.println("You Have The Following Choices:");
        System.out.println("1. Addition");
        System.out.println("2. Subtraction");
        System.out.println("3. Multiplication");
        System.out.println("4. Division ");

        choice = abhi.nextInt();
        System.out.println("Enter The First Number");
        num1 = abhi.nextInt();
        System.out.println("Enter The Second Number");
        num2 = abhi.nextInt();
        switch(choice){
        case 1:
            result = num1 + num2;
        break;
        case 2:
            result = num1 - num2;
        break;
        case 3:
            result = num1 * num2;
        break;
        case 4:
            result = num1 / num2;
        break;
        default:
            System.out.println("Error");


        }
        System.out.println("The Result Is "+result);



    }
}

它说result没有初始化;而我初步确定了它。 我哪里出错了?我声明了变量类型和所有,并尽我所能。我是一个菜鸟,所以,请原谅我愚蠢的问题和疑问。 任何帮助将不胜感激!

4 个答案:

答案 0 :(得分:1)

本地变量没有默认值。如果要访问变量,则必须使用一个变量初始化变量int num1, num2, result, choice;

答案 1 :(得分:1)

正如评论所指出的那样。

变量result仅在choice 1234的情况下获得值。因此,并非所有代码路径都会将变量result分配给值。

但是,所有代码路径都会导致System.out.println("The Result Is "+result);

您必须在result案例中为default分配一个值,或者在声明它时使用值初始化它。 。

答案 2 :(得分:1)

如果您进入切换的默认情况,result变量在尝试打印时将不会收到任何内容。

您必须在进入交换机之前或在default案例中为其提供默认值。

答案 3 :(得分:0)

在main方法中更改第一行,如下所示:

int num1, num2, result, choice = 0;