我在编译后得到这3个错误..请提前帮助和thnx ..
我的代码:
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);
}
}
}
答案 0 :(得分:1)
这意味着变量ac
,am
和ta
尚未分配任何值。您无法对没有任何值的变量求和。
对于修复,它取决于您要获取的内容。也许您需要像其他一些情况一样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
的值。
您必须在使用它们之前初始化变量,以免出现错误。
已修改