while循环使用标准输入
While loop using standard input
我正在尝试使用 algs4 StdIn.java 中的 readChar() 将不确定数量的字符读入我的数据结构。可能输入的行数也是未知的,spaces/tabs 应该被忽略。
例如,示例输入
ABC D
EF
应该读作
ABDCEF
进入我的结构。
我很难找到合适的循环来让 StdIn 按我的意愿行事,而不是让我陷入无限循环。
键入输入后,您必须按 Ctrl-Z(至少在 windows 运行 中)以告诉 StdIn class 没有更多输入
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() 将它们组合成一行。因此,您遍历每一行,然后遍历每一行中的每个字符。如果它不是 space,则将其附加到 StringBuffer。最后打印出 StringBuffer() 的 toString。该代码规定了处理换行符 (\n) 和 returns (\r).
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
String[] lines = StdIn.readAllLines();
for (int i = 0; i < lines.length; i++) {
String line = lines[i];
char[] charArray = line.toCharArray();
for (int j = 0; j < charArray.length; j++) {
char c = charArray[j];
if (c != ' '){
sb.append(c);
}
}
}
System.out.println(sb.toString());
}
运行 它与:
ABC DEF
XYZ
它输出:
ABCDEFXYZ
我正在尝试使用 algs4 StdIn.java 中的 readChar() 将不确定数量的字符读入我的数据结构。可能输入的行数也是未知的,spaces/tabs 应该被忽略。
例如,示例输入
ABC D
EF
应该读作
ABDCEF
进入我的结构。
我很难找到合适的循环来让 StdIn 按我的意愿行事,而不是让我陷入无限循环。
键入输入后,您必须按 Ctrl-Z(至少在 windows 运行 中)以告诉 StdIn class 没有更多输入
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() 将它们组合成一行。因此,您遍历每一行,然后遍历每一行中的每个字符。如果它不是 space,则将其附加到 StringBuffer。最后打印出 StringBuffer() 的 toString。该代码规定了处理换行符 (\n) 和 returns (\r).
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
String[] lines = StdIn.readAllLines();
for (int i = 0; i < lines.length; i++) {
String line = lines[i];
char[] charArray = line.toCharArray();
for (int j = 0; j < charArray.length; j++) {
char c = charArray[j];
if (c != ' '){
sb.append(c);
}
}
}
System.out.println(sb.toString());
}
运行 它与:
ABC DEF
XYZ
它输出:
ABCDEFXYZ