Java 使用标准输入的While循环

Java 使用标准输入的While循环,java,input,io,while-loop,stdin,Java,Input,Io,While Loop,Stdin,我试图使用algs4中的readChar()将不确定数量的字符读入我的数据结构。可能输入的行数也是未知的,应忽略空格/制表符 例如,示例输入 ABC D EF 应理解为 ABDCEF 进入我的结构 我很难找到一个合适的循环来让StdIn按照我想要的方式运行,而不是让我陷入无限循环。键入输入后,您必须按Ctrl-Z(至少在eclipse中运行的windows上)来告诉StdIn类没有更多输入 StringBuilder sb = new StringBuilder(); cha

我试图使用algs4中的readChar()将不确定数量的字符读入我的数据结构。可能输入的行数也是未知的,应忽略空格/制表符

例如,示例输入

ABC D
EF
应理解为

ABDCEF
进入我的结构


我很难找到一个合适的循环来让StdIn按照我想要的方式运行,而不是让我陷入无限循环。

键入输入后,您必须按Ctrl-Z(至少在eclipse中运行的windows上)来告诉StdIn类没有更多输入

    StringBuilder sb = new StringBuilder();
    char c;
    while (StdIn.hasNextChar()) {
        c = StdIn.readChar();
        if (c != '\n' && c != '\r' && c != ' ') { // plus add the unicode whitespace characters mentioned in the top comment
            sb.append(c);
        }
    }

    System.out.println(sb.toString());

这个文件给了你相当多的信息。只需使用readAllLines,然后通过StringBuffer.append()将它们组合成一行即可。所以你迭代每一行,然后迭代每一行中的每个字符。如果不是空格,请将其附加到StringBuffer。最后打印出StringBuffer()的toString。该代码具有处理换行符(\n)和返回符(\r)的规定

It输出:

ABCDEFXYZ

你希望它表现得怎么样?应该以角色结尾吗?是否要求回答是/否以继续?需要更多的细节。这意味着循环将在没有更多的输入可读取时立即结束,即以空格开头的新行。
ABC DEF 
XYZ
ABCDEFXYZ