java - 为什么我的代码总是转到 else 语句?

标签 java string if-statement

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/

相关文章:

java - 使用字符串填充字符串数组? (JAVA)

if-statement - Lua 'end' 预计关闭 'if'

javascript - 如果声明不起作用 - 有什么想法吗?

java - BufferedInputStream 转换为 byte[] 以通过 Socket 发送到数据库

java - 如何将单词的指定最后一个字母匹配并替换为句子中的不同字母

java - 调试非托管 Neo4j 扩展

c# - 如何将包含十六进制字符的字符串转换为字符串

javascript - 使用 JS 是否有多个 if else 条件的简写?

java - 上传超大 (> 1GB) 文件的建议

Java 可执行 .jar 文件无法播放外部资源中的 MP3 文件