栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

关于Java中Enter键的研究(IntelliJ IDEA 2021.3.3有bug这件事)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

关于Java中Enter键的研究(IntelliJ IDEA 2021.3.3有bug这件事)

  最近在 看Scanner相关的知识,由于涉及到Enter键的问题,于是网上查资料,突然看到一篇博客关于Java中Enter键的疑问,由于里面是大学课本中的知识,所以里面对Enter键的介绍应该是权威性的东西。即

Enter键当做两个字符:一个是ASCII码值为13的回车符(Carriage Return) “r”;另一个是ASCII码值为10的换行符 “n”


  看了博主的博客后,于是就想着研究下博主的疑问。通过研究发现IntelliJ IDEA(版本:IntelliJ IDEA 2021.3.3 (Ultimate Edition))打印的结果有问题,研究问题:Enter键在java中是几个字符,如何打印Enter键。
小编使用的IntelliJ IDEA是破解版,只为学习使用。

博主书本中的代码图片:

研究使用代码:

package com.demo;

import java.io.BufferedInputStream;
import java.io.IOException;


public class app10_4 {
    public static void main(String[] args) {
        try {
            byte[] b = new byte[128];          //设置缓冲区
            //System.out.println(System.in.getClass());

            System.out.print("please input:");
            int count = System.in.read(b);
            System.out.println("your input:");
            for (int i = 0; i < count; i++) {
            	System.out.print(b[i] + " ");
            }
                
            System.out.println();
            for (int i = 0; i < count -2; i++)
                System.out.print((char) b[i] + " ");
            System.out.println();
            System.out.println("input num:" + count);
            //Class InClass = System.in.getClass();
            //Class OutClass = System.out.getClass();
            //System.out.println("in class:" + InClass.toString());
            //System.out.println("out class:" + OutClass.toString());
        } catch (IOException e) {
        }
    }
}

不同编辑器打印结果

注:abc后面有Enter键
Eclipse和CMD打印的结果都是5,IDEA打印的却是4(有点坑人啊)
不清楚IDEA是不是有bug:
第一种可能:IDEA键盘输入流相关的,在软件内部设计如此
第二种可能:IDEA键盘输入流相关的,可以在软件设置中进行设置,比如把Enter键当成一个字符或者两个字符的设置

第三种可能:这个涉及到Enter键相关的是IDEA自身的bug

第四种可能:我用的是破解版的IDEA,是破解版导致的这个问题

这几种可能,第三种小编认为可能性更大。由于时间关系,不再研究其他几种可能了,就认为是IDEA的bug吧,这个确实很坑,容易误导人。

希望IDEA能够尽快解决这个问题,不然容易误导人
另外:网上有些说法感觉不太正确(可能只是编写时不注意)。下面试小编的理解:
Enter键:rn。网上有说是 nr的

ASCII码值:n是10,r是13

Windows系统中文件行的末尾(如果加了Enter键),行尾是:rn。(有的博客说的是 nr,可能写的时候不注意,容易误导人)
平时闲聊的时候,大家说的敲回车,是指的敲Enter键,回车也是指Enter键。如果涉及到程序问题,Enter键就是Enter键,只说回车也是指Enter键(回车+换行)

代码

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;


public class app10_5 {
    public static void main(String[] args)
    {
        //try(FileInputStream fr = new FileInputStream("D:/Myfile.txt");)
        try(FileReader fr = new FileReader("D:/Myfile.txt");)
        {
            //byte [] c = new byte[250];
            char [] c = new char[250];
            int num =fr.read(c);//this read methods return the number of characters read
            String str = new String(c,0,num);
            System.out.println("文本中的字符有"+num+"个");
            System.out.println("文本中的内容是:"+str);
        }
        catch (FileNotFoundException e)
        {
            System.out.println("file not found");
        }
        catch (IOException e)
        {
            System.out.println("IOException");
        }
    }
}

参考:
关于Java中Enter键的疑问
此问题已经发过一贴,但没有清楚,关于System.in.read()方法是抽象方法
InputStream read()方法详解
向InputStream的开头和结尾添加字符
System.in.read()的用法
Java中的回车(r)和换行(n)
Java开发之回车换行符,我跳过的坑你跳过吗?–中享思途
  小编写这个博客的时候,差点把锅煮坏,早上煮的鸡蛋,一直煮了1个小时,厨房离我坐着写博客的位置只有3米远,能听到锅里的嘟嘟的声音,眼睛还能看到锅,就这么眼睁睁的煮着。竟然忘了煮鸡蛋这事,幸亏添的水多。提醒大家在写东西或者玩游戏的时候千万不要煮东西,小心火炉,煮东西的时候旁边要一直看着,注意安全。
2022.5.8 10.03 sh ylxy 50219388
java的回车语句_【转载】Java中的回车换行符/n /r /t

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/871938.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号