Error: variable might not have been initialised in my CellPhoneBill program
Error: variable might not have been initialised in my CellPhoneBill program
我在编译后遇到了这 3 个错误.. 请提前帮助和感谢..
- 错误:变量 ac 可能尚未初始化
tcws=cm+tm+ac+am+ta;
- 错误:变量 am 可能尚未初始化
tcws=cm+tm+ac+am+ta;
- 错误:变量 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);
}
}
}
表示变量ac
、am
、ta
没有被赋值。您不能对没有任何值的变量求和。
对于修复,这取决于您要获取的内容。也许你需要像在其他一些情况下那样做 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
的值。
您必须在使用变量之前对其进行初始化,以免出现错误。
编辑更正
我在编译后遇到了这 3 个错误.. 请提前帮助和感谢..
- 错误:变量 ac 可能尚未初始化 tcws=cm+tm+ac+am+ta;
- 错误:变量 am 可能尚未初始化 tcws=cm+tm+ac+am+ta;
- 错误:变量 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);
}
}
}
表示变量ac
、am
、ta
没有被赋值。您不能对没有任何值的变量求和。
对于修复,这取决于您要获取的内容。也许你需要像在其他一些情况下那样做 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
的值。
您必须在使用变量之前对其进行初始化,以免出现错误。
编辑更正