当前位置: 首页 > 知识库问答 >
问题:

Eclipse现在是否不接受Enter/Return作为空字符?

水昊阳
2023-03-14

我制作了以下简单的程序,将普通引号改为TEX引号

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;

public class TexQuotes {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        PrintWriter pw = new PrintWriter(System.out);
        
        String lines;
        boolean first = true;
        while ((lines = br.readLine()) != null) {
            for (char c: lines.toCharArray())
                if (c == '"') {
                    pw.print(first ? "``" : "''");
                    first = !first;
                }
                else pw.print(c);
            
            pw.println();
        }
        
        br.close();
        pw.flush();
    }
}

问题是,当试图在Eclipse控制台中输入一些东西并按回车键时,没有任何东西输出回来。代码在旧版本的Eclipse上运行良好,但是Eclipse现在不接受回车键作为空指示器吗?

注意:有时按下Ctrl Z键时,我会得到一个输出,但大多数情况下它也不起作用。任何其他Ctrl键组合都不起作用。

编辑:例如,当我输入以下语句作为输入时:

"So there are seven now", said John, "and we need to figure out which one."

我预计产出:

``So there are seven now'', said John, ``and we need to figure out which one.''

问题是,我从未退出while循环,因此输出也从未刷新,因为while循环在输入空字符之前接受输入。问题当然是,我不知道Eclipse中如何输入空字符。

共有1个答案

赵景曜
2023-03-14
import java.util.Scanner;

public class TexQuotes {

    public static void main(String[] args) {
        Scanner stdin = new Scanner(System.in);
        String line;
        while (stdin.hasNextLine()) {
            line = stdin.nextLine();
            boolean start = true;
            while (line.indexOf('"') >= 0) {
                if (start) {
                    line = line.replaceFirst("\"", "``");
                    start = false;
                }
                else {
                    line = line.replaceFirst("\"", "''");
                    start = true;
                }
            }
            System.out.println(line);
        }
        System.out.println("    ***  TexQuotes.main() completed  ***");
    }
}

通过输入文件结尾,即Windows上的Ctrl Z,可以终止while循环
在输入文件结尾之前,请输入一行文本,然后按enter键
按ENTER键后,输入文本中的所有双引号字符交替替换为文本引号。

使用BufferedReaderPrintWriter...

InputStreamReader in = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(in);
PrintWriter pw = new PrintWriter(System.out);
try {
    String line = br.readLine();
    while (line != null) {
        boolean start = true;
        while (line.indexOf('"') >= 0) {
            if (start) {
                line = line.replaceFirst("\"", "``");
                start = false;
            }
            else {
                line = line.replaceFirst("\"", "''");
                start = true;
            }
        }
        pw.println(line);
        pw.flush();
        line = br.readLine();
    }
}
catch (IOException xIo) {
    xIo.printStackTrace();
}
 类似资料:
  • 红线位于“打开导航抽屉”和“关闭导航抽屉”下 这张图片显示了这个问题

  • 问题内容: 如何检查字符串是否不为null也不为空? 问题答案: 那呢? 确保&&按此顺序使用的部分,因为如果的第一部分&&失败,java将不会继续评估第二部分,因此确保你不会从为null的情况下得到null指针异常。 请注意,仅从Java SE 1.6起可用。你必须检查以前的版本。 也要忽略空格: (由于可以简化为也可以测试其他空白) 包裹在一个方便的功能中: 成为:

  • Spring允许在中定义。 我已经在那里为HTTP 400、404、405等定义了许多其他异常处理程序,。。。然而,HTTP 406的ExceptionHandler(不可接受)似乎不起作用。处理程序被触发,我在日志中对此进行了检查,但没有使用结果。 我的目标是返回一个带有JSON主体的HTTP 406。 变型1 变体2 但是我总是从Tomcat得到类似的超文本标记语言响应: HTTP状态406-

  • 问题内容: 在Java 8中,这有效: 但这不是: Maps允许使用null键,并且List.class.getSuperclass()返回null。但是Collectors.groupingBy在Collectors.java的第907行发出了NPE: 如果我创建自己的收集器,则此行会更改为: 我的问题是: 1)Collectors.groupingBy的Javadoc并未表示不应映射空键。是否

  • 我需要一个scanf()调用来接受空格(没有制表符或换行符,只有空格符号)。 我从这个问题的答案中得到了这个格式说明符: 如何使用扫描允许空间输入 虽然它可以很好地接受第一个输入序列,但它在第一个空白字符所在的位置终止,并使用空字符。发生什么事?我是否使用了错误的格式? 我应该说,我在这里使用scanf()是因为安全不是一个问题;我是唯一一个使用这个特殊程序的人,输入的格式是严格的。

  • 本文向大家介绍检查字符串在Java中是否不为空(“”)并且不为null,包括了检查字符串在Java中是否不为空(“”)并且不为null的使用技巧和注意事项,需要的朋友参考一下 假设我们有以下字符串- 现在让我们检查字符串是否为null或不为空。 示例 输出结果