如何将多个输入从键盘存储到Java中的变量中



(我不能使用数组或更先进的东西。我可以使用子字符串和循环,这几乎就是这样。(我有一个程序,该程序不断要求用户输入名称。我如何一次又一次地输入不同的名称,然后打印出所有由逗号分隔的不同名称。如何将多个输入存储到一个变量中?当用户输入HI时,他们输入的所有名称都应被逗号分开,并且循环应该退出。我可以让LOP退出,但并非他们输入的所有名称要打印出来。

public class Hi {
    public static void main(String[]args){
        Scanner s = new Scanner(System.in);
        String Names;
        String x = "hi";
        while (true) {
            System.out.print("Please enter a name: ");
            Names=s.nextLine();
            int len = Names.length(); 
            if (Names.compareTo(x) == 0) {
                break;
            } 
        }
    }
}

您可以使用StringBuilder累积它们:

final String QUIT_FLAG = "hi";
String currName = null;
StringBuilder names = new StringBuilder();
Scanner sc = new Scanner(System.in);
while (true) {
    System.out.print("Please enter a name: ");
    currName = sc.nextLine();
    if (QUIT_FLAG.equals(currName)) {
        break;
    }
    if (names.length() > 0) {
        names.append(',');
    }
    names.append(currName);
}
System.out.println(names);

您已经使用过

Names = s.nextLine();

在您的while循环中。该=操作员清除了Names变量,然后分配给给定的最后一个值。因此,按顺序保留先前的值,请使用+=操作员。

所以尝试使用

Names += ", " + s.nextLine();

我建议您使用equals()代替compareTo()。更改您的main方法。

public static void main(String[] args) {
    Scanner s = new Scanner(System.in);
    String Names = null;
    while (true) {
        System.out.print("Please enter a name: ");
        String name = s.nextLine();
        if (name.toLowerCase().equals("hi")) {
            break;
        }
        if (Names == null) {
            Names = name;
        } else {
            Names += ", " + name;
        }
    }
    System.out.println("Names : " + Names);
}

最新更新