我是学习Java的新手。我大约一个星期前就开始了,每天花大约10个小时学习,我不确定我是否会落后于“应该”的地方(我正在处理的另一个问题) 我知道我的代码可能不是最有效的,但我必须从某个地方开始,而且我已经从上周读过的信息中输入了大部分内存。现在,我只是想制作游戏或应用来帮助巩固编程概念。把我学到的东西用来使这些信息变得相关。
我的问题是,为什么我的“if”语句直接转到“else”?
public class ClassSelect {
public static String className;
public static void pickPlayer() {
Scanner scan = new Scanner(System.in);
System.out.println("Pick your class." + "\n" + "[F]ighter" + "\n"
+ "[W]izard");
String scanClass = scan.nextLine();
if ((scanClass == "f") || (scanClass == "F")) {
System.out.println("You picked the Fighter");
String classNameF = "Fighter";
className = classNameF;
try {
File file = new File("saveData.txt");
BufferedWriter output = new BufferedWriter(new FileWriter(file));
output.write(className);
output.close();
} catch (IOException e) {
e.printStackTrace();
}
}
else if ((scanClass == "w") || (scanClass == "W")) {
System.out.println("You picked the Wizard");
String classNameW = "Wizard";
className = classNameW;
try {
File file = new File("saveData.txt");
BufferedWriter output = new BufferedWriter(new FileWriter(file));
output.write(className);
output.close();
} catch (IOException e) {
e.printStackTrace();
}
} else {
System.out.println("You didn't choose either.");
}
}
答案 0 :(得分:3)
对于字符串比较,您必须使用equals
类的Object
方法。
您的if语句将变得像 - if(scanClass.equals("f"))...
请记住,==
比较参考而不是实际对象。
答案 1 :(得分:0)
始终使用equals
比较字符串。
==比较参考文献。
equals()比较值。
if ((scanClass.equals("f") || (scanClass.equals("F")))
答案 2 :(得分:0)
你应该使用
if语句中的scanClass.equalsIgnoreCase("f")
因为==
运算符将引用与值进行比较。
答案 3 :(得分:0)
运算符==,测试两个对象引用变量是否引用对象的完全相同的实例。
方法.equals()测试两个对象是否相互比较 - 但它们不必是同一对象的完全相同的实例。所以
if ((scanClass == "f") || (scanClass == "F"))
计算结果为false,控制权转到else块。