嗨,我只是想问一下当你在一个条件下使用它时如何正确初始化一个变量?这是我到目前为止所做的代码..
import java.io.*;
public class Bwiset{
public static void main(String[]args){
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int t=0;
double v=0;
String vt,tt;
double tc;
try{
System.out.print("==================================\nVehicle Type \tCharge per km \n Car \t\t Php0.50\n Light Truck \t Php0.75");
System.out.print("\n Bus \t\t Php1.00");
System.out.print("\n Heavy Truck \t Php1.25\n");
System.out.print("==================================\n");
System.out.print("Km Travelled \t Ticket Color\n");
System.out.print(" 15 \t \t Yellow\n");
System.out.print(" 25 \t \t Blue\n");
System.out.print(" 50 \t \t Red\n");
System.out.print(" 75 \t \t Orange\n");
System.out.println("Welcome! Please enter your vehicle type: ");
vt=br.readLine();
System.out.println("Enter ticket type: ");
tt=br.readLine();
if (vt=="car"||vt=="Car"||vt=="CAR"||vt=="cAr"||vt=="caR"||vt=="CAr"||vt=="cAR"){
v=0.50;
}else if (vt=="light truck"||vt=="Light Truck"||vt=="LIGHT TRUCK"){
v=0.75;
}else if (vt=="bus"||vt=="Bus"||vt=="BUS"){
v=1.00;
}else if (vt=="heavy truck"||vt=="Heavy Truck"||vt=="HEAVY TRUCK"){
v=1.25;
}
if (tt=="Yellow"||tt=="yellow"||tt=="YELLOW"){
t=15;
}else if (tt=="BLUE"||tt=="blue"||tt=="Blue"){
t=25;
}else if (tt=="red"||tt=="RED"||tt=="Red"){
t=50;
}else if (tt=="orange"||tt=="ORANGE"||tt=="Orange"){
t=75;
}
tc=v*t;
System.out.println("Vehicle Type: " + vt);
System.out.println("Ticket Type:" + tt);
System.out.println("Charge According to Vehicle: " + v);
System.out.println("Kilometers traveled according to ticket: " + t);
System.out.print("Total Toll Charge: " + tc);
}catch(IOException e){
}
}
}
为了缩短它,程序会运行,但是当你输入车辆类型和票证类型时,它仍然会返回 0 ,这不应该发生 - 因为我使用的条件分配了每种车型和车票类型的特定值(也显示在程序附带的表格中)。我试图搜索与此相关的正确初始化但我找不到任何东西,我感到很困惑。请帮忙。对不起这样的菜鸟
答案 0 :(得分:4)
请勿使用==
来比较String
个值;在Java中,使用对象==
比较对象引用以确定它们是否引用同一对象。
使用String#equals
比较String
值。
if (vt.equals("car") || vt.equals("Car"))
事实上,String#equalsIgnoreCase
在您的情况下更好,减少每个if
声明中的条件数量:
if (vt.equalsIgnoreCase("car"))