java无法识别扫描仪输入

ubby3x7f  于 2021-07-06  发布在  Java
关注(0)|答案(2)|浏览(262)

这个问题在这里已经有答案了

如何比较java中的字符串(23个答案)
上个月关门了。

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语句。最后把所有的东西都打印出来是很重要的。那我做错什么了?
我希望这个在最后(输入:卫星,喷气机)

:fire: Buying DAILY :fire:
:Satellite: :Satellite: :Satellite: :Satellite:
:Jet: :Jet: :Jet: :Jet:
34gzjxbg

34gzjxbg1#

字符串不是基元,因此不能使用相等运算符(=)与另一个字符串进行比较。
要比较两个字符串,只需使用.equals()方法,该方法已作为java中字符串api的一部分提供。

input.equals("0")
klsxnrf1

klsxnrf12#

这里的问题是,您试图比较的不是字符串内容,而是它的示例引用。您需要的是比较字符串值。
修改 if 中的语句 while 以下循环是解决问题的一种可能的解决方案:

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) {

输入/输出示例如下:

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

相关问题