0

当一行中输入了多个字符串时,程序会额外打印一次“输入字符串”。例如,我输入“一二”它提示“输入字符串”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*/
4

2 回答 2

5

它提示Enter Strings每个循环。如果输入 3 个标记(以空格分隔),那么它将循环运行 3 次,立即读取每个值。

如果您想要一个提示,无论您输入多少标记/单词,然后阅读整行nextLine

x[i] = kb.nextLine();
于 2013-10-23T19:20:34.583 回答
0

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

    System.out.println("Enter Strings");
    while(kb.hasNext()){
        x[i] = kb.next();
        if (x[i].equals("done")) 
            break;          
        i++;
    }
于 2013-10-23T19:33:07.917 回答