public int payment(){
int Carpayment;
int hour;
String type;
if (type == "MyVi")
Carpayment = 10 * hour;
else
if (type == "Iswara")
Carpayment = 15 * hour;
else
if (type == "Waja")
Carpayment = 20 * hour;
else
if (type == "Vios")
Carpayment = 25 * hour;
else
if (type == "Civic")
Carpayment = 30 * hour;
return Carpayment;
}
当我运行此代码时..错误 Carpayment 可能尚未初始化
答案 0 :(得分:0)
你可以做的一些整改
比较 type == "MyVi" ,您不应该将字符串与 == 运算符进行比较,因为它将比较对象,即哈希码比较。 你应该使用 type.equals("MyVi");
您不应使用局部变量来计算汽车付款,因为它们需要初始化,因此您应该将它们传递给付款方式或将它们用作实例变量。
public int payment(int Carpayment,int hour,String type){
//int Carpayment;
//int hour;
//String type;
if (type == "MyVi")
Carpayment = 10 * hour;
else
if (type == "Iswara")
Carpayment = 15 * hour;
else
if (type == "Waja")
Carpayment = 20 * hour;
else
if (type == "Vios")
Carpayment = 25 * hour;
else
if (type == "Civic")
Carpayment = 30 * hour;
return Carpayment;
}
3.你可以这样做
Class Car {
int Carpayment;
int hour;
String type;
Car(int hour,String type) {
this.hour = hour;
this.type = type;
}
public int payment(){
if (type == "MyVi")
Carpayment = 10 * hour;
else
if (type == "Iswara")
Carpayment = 15 * hour;
else
if (type == "Waja")
Carpayment = 20 * hour;
else
if (type == "Vios")
Carpayment = 25 * hour;
else
if (type == "Civic")
Carpayment = 30 * hour;
return Carpayment;
}
}
Car civic_1 = new Car(4,"Civic");
System.out.println(civic_1.payment());//Prints the Car payment to be done
答案 1 :(得分:-1)
发生这种情况是因为您没有最后一个 else 子句。因此,您可以通过所有 ifs 并且不要进入任何人。要解决此问题,您可以:
使用默认值初始化 Carpayment 变量(我认为更好的选择);
public int payment(){
int Carpayment;
int hour;
String type;
if (type == "MyVi")
Carpayment = 10 * hour;
else
if (type == "Iswara")
Carpayment = 15 * hour;
else
if (type == "Waja")
Carpayment = 20 * hour;
else
if (type == "Vios")
Carpayment = 25 * hour;
else
if (type == "Civic")
Carpayment = 30 * hour;
return Carpayment;
}
或
将最后一个 else 子句放在最后一个 else if 中。
public int payment(){
int Carpayment;
int hour;
String type;
if (type == "MyVi")
Carpayment = 10 * hour;
else
if (type == "Iswara")
Carpayment = 15 * hour;
else
if (type == "Waja")
Carpayment = 20 * hour;
else
if (type == "Vios")
Carpayment = 25 * hour;
else
if (type == "Civic")
Carpayment = 30 * hour;
else
Carpayment = 0;
return Carpayment;
}
答案 2 :(得分:-1)
局部变量不是默认值初始化的,在初始化之前尝试使用时会抛出编译器时间错误。
因此,在您返回之前初始化 Carpayment。
public int payment(){
int Carpayment = 0;
int hour;
String type;
if (type == "MyVi")
Carpayment = 10 * hour;
else
if (type == "Iswara")
Carpayment = 15 * hour;
else
if (type == "Waja")
Carpayment = 20 * hour;
else
if (type == "Vios")
Carpayment = 25 * hour;
else
if (type == "Civic")
Carpayment = 30 * hour;
return Carpayment;
}