Error: variable might not have been initialised in my CellPhoneBill program

Error: variable might not have been initialised in my CellPhoneBill program

我在编译后遇到了这 3 个错误.. 请提前帮助和感谢..

  1. 错误:变量 ac 可能尚未初始化 tcws=cm+tm+ac+am+ta;
  2. 错误:变量 am 可能尚未初始化 tcws=cm+tm+ac+am+ta;
  3. 错误:变量 ta 可能尚未初始化 tcws=cm+tm+ac+am+ta;

我的代码:

import java.lang.*;

import java.util.Scanner;

class CellPhoneBill {

    public static void main(String[]args) {

        double cm ,tm ,ac, am, ta, tcws, tax, taxpluscost ;

        Scanner s=new Scanner(System.in);

        System.out.print("Enter the number of minutes and also enter the number of text messages ");

        cm= s.nextDouble();

        tm= s.nextDouble();
        if(cm<=50&& tm<=50) {

            System.out.print("Base charge= .00"); }

        else if(cm>50 && tm>50) {

            System.out.println("Enter no of additional call minutes (if any) and additional messages(if any) ");

            ac=s.nextDouble();
            am= s.nextDouble();

            cm=0.25* ac;

            am=0.15*am;
            System.out.println("Additional call charges = " +ac);

            System.out.println("Additional message charges = " +am);

            ta=ac+am;

            System.out.println("Total Additional charges = " +ta);

        }

        else if(cm>=0&& tm>=0) { System.out.println("911 Call charges =[=10=].44" );

        }

        else { 
            tcws= cm+tm+ac+am+ta;

            System.out.println("Total cost without Sales Tax ="+tcws);

            tax=( 5/100.00*(tcws));

            System.out.println(" 5% Sales Tax ="+tax);
            taxpluscost=tcws+tax;

            System.out.println("Total cost Including 5% Sales Tax ="+taxpluscost);
        } 
    }
}

表示变量acamta没有被赋值。您不能对没有任何值的变量求和。

对于修复,这取决于您要获取的内容。也许你需要像在其他一些情况下那样做 ac=s.nextDouble(); 来从用户那里读取一个值。或者,也许您只需要执行 ac = 1.0; 或任何合适的值。当然,其他两个变量也一样。

可能您想要一个不同的 if-else 结构,其中在一个 if 分支中分配给三个变量的值也应该在最后一个 else 中使用部分?

对于 Auto initialization,您可以在 class 中将它们声明为实例变量,而不是静态 method.You 然后可以在您的 static 方法中使用相同的变量。

您的扫描仪最初只提示用户输入两个值,这两个值都不是 ac 或 am。因此 ac = s.nextDouble()am = s.nextDouble () 实际上并没有给 ac 和 am

赋值

在 java 中,对原始数据类型的引用存储在与变量相同的寄存器中。

double a = 12.345; 

初始化变量a并将其设置为12.345的值。

您必须在使用变量之前对其进行初始化,以免出现错误。

编辑更正