Java 无法识别扫描仪输入

Java doesnt recognize scanner input

import java.util.Scanner;

public class SimCompanies {
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner (System.in);

        boolean x=true;
        String complete = new String(":fire: Buying DAILY :fire:\n");
        while (x==true) {
            String input = scanner.next();
            if (input == "0") {
                System.out.println(complete);
                x=false;
            }
            else {
                complete += extend(input);
            }
        }
}

public static String extend(String a) {
        return new String( 
    ":" + a + ": " + ":" + a + ": " + ":" + a + ": " + ":" + a + ": \n" );
        
    }

我想编写一个可以处理输入的程序。对于新行中的每个输入,它都应接受输入并执行“扩展”功能。我尝试了很多,发现它与函数配合得很好(因此无论我有多少输入,它都能正确处理输入)。但是我想在写“0”时停止程序。但是程序没有看到我在写“0”。它总是进入 else 语句,但永远不会进入 if 语句。 重要的是,最后应打印出所有内容。那我做错了什么?

我想要这个在最后(输入:Satellite, Jet)

:fire: Buying DAILY :fire:
:Satellite: :Satellite: :Satellite: :Satellite:
:Jet: :Jet: :Jet: :Jet:

这里的问题是您尝试比较的不是字符串内容,而是它的实例引用。您想要的是比较字符串值。

修改while循环中的if语句,如下是解决问题的可能方案:

while (x==true) {
    String input = scanner.next();
    if (input.equals("0")) {
        System.out.println(complete);
        x=false;
    }
    else {
        complete += extend(input);
    }
}

或使用:

if (input.compareTo("0") == 0) {

input/output 的一个例子是:

fire
Satellite
Jet
0
:fire: Buying DAILY :fire:
:fire: :fire: :fire: :fire: 
:Satellite: :Satellite: :Satellite: :Satellite: 
:Jet: :Jet: :Jet: :Jet: 

字符串不是原始字符串,因此您不能使用相等运算符 (==) 与另一个字符串进行比较。

要比较 2 个字符串,只需使用已在 Java.

中作为字符串 API 的一部分提供的 .equals() 方法

input.equals("0")