为什么我的方法在System.in.read()循环后被调用3次 - java

我已经开始学习Java,写了一些非常简单的东西,但是有一点我不理解:

public static void main(String[] args) throws java.io.IOException
{
    char ch;

    do 
    {
        System.out.println("Quess the letter");
        ch = (char) System.in.read();
    }
    while (ch != 'q');
}

为什么System.out.println在给出错误答案后会打印三遍“问字母”。在给出任何答案之前,字符串仅打印一次。

提前致谢

参考方案

因为当您打印char并按Enter时,会产生3个符号(在Windows上):字符,回车符和换行符:

q\r\n

您可以在这里找到更多详细信息:http://en.wikipedia.org/wiki/Newline

对于您的任务,您可能需要使用更高级别的API,例如Scanner

    Scanner scanner = new Scanner(System.in);
    do {
        System.out.println("Guess the letter");
        ch = scanner.nextLine().charAt(0);
    } while (ch != 'q');

bulit-in gradle插件的版本号是多少? - java

在我的gradle构建文件中,我有以下插件块plugins { `java-library` jacoco checkstyle } 这些都没有指定版本,但是一切正常。假定一个项目正在使用gradle 6.0和gradle包装器,但是系统已安装gradle 5.0。问题:如果我运行gradle wrapper ./gradlew build,将会执行grad…

ImageIO.read()是否考虑了EXIF方向元数据? - java

在JPEG图像中,有时会包含EXIF元数据,并告知应以什么方向显示图像。问题是,Java的ImageIO.read()在读取JPEG图像时是否将EXIF考虑在内,并自动应用转换。更具体地说,如果我使用Java的ImageIO将带有EXIF的JPEG图像转换为PNG图像,PNG图像的方向是否正确?还是下面的代码将在不考虑EXIF方向说明的情况下生成PNG图像?…

套接字InputStream块在available()/ read()上 - java

我正在阅读Socket InputStream,调用read()和available()可以进行几次循环迭代。以后的available()会无限期阻塞!可能是什么问题?我该如何使它不受阻碍?码:BufferedInputStream buffIn = new BufferedInputStream(in); while (true) { if (buffIn…

包括Java in Play! Scala源代码树杀死编译 - java

我正在使用Play!与Scala一起使用,并在源代码树中包括几个Java类。一切正常,直到我开始在树中直接包含源类。看来,每当我尝试使用app / com / class / class.java之类的文件夹编译应用程序时(仔细检查导入的结构是否正确),该应用程序都不会编译。它将在提示中启动,并进入“ API phase was ...”并挂起。我改编了一个…

Java:线程池如何将线程映射到可运行对象 - java

试图绕过Java并发问题,并且很难理解线程池,线程以及它们正在执行的可运行“任务”之间的关系。如果我创建一个有10个线程的线程池,那么我是否必须将相同的任务传递给池中的每个线程,或者池化的线程实际上只是与任务无关的“工人无人机”可用于执行任何任务?无论哪种方式,Executor / ExecutorService如何将正确的任务分配给正确的线程? 参考方案 …