错误:我的CellPhoneBill程序

时间:2017-05-21 15:40:39

标签: java variables compile-time

我在编译后得到这3个错误..请提前帮助和thnx ..

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

    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= $15.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 =$0.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);
            } 
        }
    }
    

4 个答案:

答案 0 :(得分:1)

这意味着变量acamta尚未分配任何值。您无法对没有任何值的变量求和。

对于修复,它取决于您要获取的内容。也许您需要像其他一些情况一样ac=s.nextDouble();来读取用户的值。或者您可能只需要ac = 1.0;或任何适当的值。当然,其他两个变量也一样。

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

double a = 12.345; 

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

您必须在使用它们之前初始化变量,以免出现错误。

已修改