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参数获取String时,我可能做错了。我错过了什么?
答案 0 :(得分:3)
if (x == "e"){
您应该将String
个对象与equals()
进行比较,而不是operator==
。您还应该知道equalsIgnoreCase()
,它会检查String
的相等性,而忽略每个字符的大小写 - 有时可能会有用。
operator==
检查身份 - 如果两个对象实际上是同一个对象[引用同一个对象的变量],而equals()
正在检查是否相等 - 如果他们的内容相同。
变化
if (x == "e"){
到
if ("e".equals(x)) {
并对else if (x == "f"){
答案 1 :(得分:1)
您需要使用“equals”比较方法。 X是一个字符串,并且没有用于“==”的重载运算符来比较值。
如果您不确定,请务必查看对象的javadoc。
http://docs.oracle.com/javase/6/docs/api/java/lang/String.html
if(x.equals("e")){
}
答案 2 :(得分:0)
因为e
是双倍的,当你把它转换为int
时,你会丢失一些。
答案 3 :(得分:0)
尝试(也许你得到一个空白处:
String x = input.nextLine().toString().trim()
或
x.equals("e")