在两个字符串输入数组后停止重复提示?

时间:2013-10-23 19:17:53

标签: java arrays

如果在一行中输入多个字符串,程序将打印“输入字符串”一段额外的时间。例如,我输入“One Two”,它会提示“输入字符串”2次。如果我输入“一二三”,它会提示“输入字符串”3次,依此类推。无论如何在没有在循环中创建新对象的情况下解决这个问题吗?

import java.util.Scanner;
class Array {
    public static void main(String[] args) {
            String[] x = new String[1000];
            Scanner kb = new Scanner(System.in);
            int i = 0;
            while (true) {
                System.out.println ("Enter Strings");
                x[i] = kb.next();
                if (x[i].equals("done")) 
                    break;
                i++;
            }
            for (i = i - 1; i >= 0; i--) {  //prints strings in reverse order prior to done     
                System.out.println(x[i]);
            }
        }
}
    /*Example Output:
    Enter Strings
    One Two
    Enter Strings
    Enter Strings
    Hello
    Enter Strings
    Bye
    Enter Strings
    done
    Bye
    Hello
    Two
    One*/

2 个答案:

答案 0 :(得分:5)

它提示每个循环Enter Strings。如果输入3个令牌(以空格分隔),则它将循环3次,立即读取每个值。

如果您想要一个提示,无论您输入多少令牌/单词,请使用nextLine阅读整行:

x[i] = kb.nextLine();

答案 1 :(得分:0)

您可以在没有“输入字符串”提示的情况下输入任意数量的字符串,直到您输入“完成”。使用Scanner.hasNext()接受更多字符串而不提示。

    System.out.println("Enter Strings");
    while(kb.hasNext()){
        x[i] = kb.next();
        if (x[i].equals("done")) 
            break;          
        i++;
    }