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

时间:2018-03-28 17:35:46

标签: java variables input while-loop substring

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

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;
            } 
        }
    }
}

2 个答案:

答案 0 :(得分:0)

您可以使用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);

答案 1 :(得分:0)

您已使用

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);
}