有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java变量未初始化我必须设置一个变量,而不是仅仅在if语句中添加它吗?

我试图建立一个基本的重量计算器,遇到了“可变重量可能尚未初始化”的错误。谷歌似乎表示这是因为我需要初始化“weightOut”,而不是仅仅将其设置为“=weightIn*.78”。这是真的吗?这是我的密码

 Scanner keyboard = new Scanner(System.in);

          int weightIn, planetNumber;
          double weightOut;

          System.out.print("What is your weight? ");
          weightIn = keyboard.nextInt();

          System.out.println("I have information for the following planets: ");
          System.out.println("   1. Venus ");
          ...

          System.out.print("What planet are you going to? ");
          planetNumber = keyboard.nextInt();

          if( planetNumber == 1 )
          {
              weightOut = weightIn * 0.78;
          }
          ...

         System.out.println("Your weight would be " + weightOut + 
                  " on that planet.");

共 (3) 个答案

  1. # 1 楼答案

    如果行星号是0呢

    你应该做:

    double weightOut = 0;

  2. # 2 楼答案

    如果不输入if分支,变量将具有什么值

    要解决此问题,请在末尾添加else分支:

    if (...)
        myVar = x;
    else if (...)
        myVar = z;
    else
        myVar = y;
    

    在else分支中设置值,而不是设置一些默认初始值,不仅可以让编译器感到高兴,而且可以防止您提交编译器正在抱怨的错误:如果在if语句中设置正确值之前添加使用该变量的代码,您仍然会得到错误来自编译器的消息,而不是运行程序时的意外结果

  3. # 3 楼答案

    局部变量不使用默认值初始化。局部变量应该在使用前初始化

    double weightOut = 0.0;
    

    如果if语句在运行时从未真正执行过呢?编译器实际上担心的是,如果在运行时局部变量无法获取值,而您在其他地方使用它,那么它应该给出的值就没有默认值