package GC;
import java.util.Scanner;
public class main {
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
System.out.println("Calculate exam grade needed(e) or final grade received(f)?");
String x = input.nextLine();
if (x == "e"){
double q1, q2, f, e;
Scanner inputa = new Scanner(System.in);
Scanner inputb = new Scanner(System.in);
Scanner inputc = new Scanner(System.in);
System.out.print("Quarter 1: ");
q1 = inputa.nextInt();
System.out.print("Quarter 2: ");
q2 = inputb.nextInt();
System.out.print("Final grade wanted: ");
f = inputc.nextInt();
e = 5*(f-0.4*(q1)-0.4*(q2));
if(e == (int)e){
System.out.println((int)e);
}
else{
e = 0.01*((int)(e*100));
System.out.println(e);
}
}
else if (x == "f"){
}
else{
System.out.println("ERROR");
}
}
}
即使我在开头输入 e,它也总是转到 else 语句。我可能在从用户输入或 if 参数获取字符串时犯了一些错误。我错过了什么?
最佳答案
if (x == "e"){
您应该将 String
对象与 equals()
进行比较而不是operator==
。您还应该注意equalsIgnoreCase()
,它检查 String
的相等性,同时忽略每个字符的大小写 - 有时可能很有用。
operator==
检查身份 - 如果两个对象实际上是同一个对象[引用同一对象的变量],而equals()
正在检查相等 - 如果它们的内容相同。
改变
if (x == "e"){
至
if ("e".equals(x)) {
并对 else if (x == "f"){
关于java - 为什么我的代码总是转到 else 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9960127/