Java中的回车(\r)和换行(\n)
来源:互联网 发布:淘宝买家评价多久清空 编辑:程序博客网 时间:2024/06/04 18:39
\n是换行符,这并不是java中的规定,而是更广泛的计算机领域中均为此含义。
1、提到\n就不能不提\r(回车),下面,详细讲解一下:
在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。
于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。
这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。
后来,计算机发明了,这两个概念也就被般到了计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。于是,就出现了分歧。
Unix系统里,每行结尾只有“<换行>”,即“\n”;
Windows系统里面,每行结尾是“<换行><回车>”,即“\n\r”;
Mac系统里,每行结尾是“<回车>”。一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。
\r回车是将光标移到一行的前面
\n是移到下一行
2、示例
System.out.print(“\n”);
如上代码表示在控制台中换一行
以上内容引自:https://zhidao.baidu.com/question/399628743.html
注意:在Java中nextInt()方法接收一个整型字符,不会读取\n,nextline()读入一行文本,会读入”\n”字符,但”\n”并不会成为返回的字符
例1:
import java.util.Scanner;/** * Created by Administrator on 2017/8/31. */public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); while(sc.hasNext()) { String s=sc.nextLine(); int k=sc.nextInt(); System.out.println(s); System.out.println(k); } }}
来看一下上面代码的执行结果
当我输入abc时程序抛错:
当我进行第一轮次输入时:
s=’abcd\n\r’
k=’5\r’
此时控制台输入第一个5的那行还有一个‘\n’没有被读取
当我进行第二轮次输入时:
s=’\n’
k=’abc’
这时的s自动读到的上一次未读的‘\n’,我们再输入数时就是给k赋值了,而我输入的是abc所以抛错。
当然在真正运行程序时,并不会读取‘\n\r’以上仅为模拟,方便理解。真实读取情况如下:
当我进行第一轮次输入时:
s=’abcd’
k=’5’
此时控制台输入第一个5的那行还有一个‘\n’没有被读取
当我进行第二轮次输入时:
s=”
k=’abc’
例2:当我将上例中的剩余的‘\n’给‘吃掉’时,就不会出现错误
import java.util.Scanner;/** * Created by Administrator on 2017/8/31. */public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); while(sc.hasNext()) { String s=sc.nextLine(); int k=sc.nextInt(); String ss=sc.nextLine(); System.out.println(s); System.out.println(k); } }}
来看一下上面代码的执行结果:
程序正常输入
当我进行第一轮次输入时:
s=’abcd\n\r’
k=’5\r’
ss=’\n’
此时控制台输入第一个5的那行还有一个‘\n’没有被读取
当我进行第二轮次输入时:
s=’abc\n\r’
k=”5\r
ss=’\n’
…
此时程序运行正常
例3:当我们在控制台进行输入输出容易抛出java.lang.NumberFormatException: For input string: “”错误
import java.util.Scanner;/** * Created by Administrator on 2017/8/31. */public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); while(sc.hasNext()) { int k=Integer.parseInt(sc.nextLine()); String s=sc.nextLine(); int k1=sc.nextInt(); System.out.println(k); System.out.println(s); System.out.println(k1); } }}
来看一下上面代码的执行结果:
当我输入第二轮次的5时程序抛错
这是因为当我首次进行第二轮次输入时sc.nextLine()读到的是第一轮次k1未读到的‘\n’,实际是‘’,而‘’是不能够转换为整数的包装类型的所以出错。
如果在代码末尾追加sc.r=nextline(), 把’\n’吃掉,程序运行正常。
- Java中的回车(\r)和换行(\n)
- Windows中的回车和换行 “\r\n”
- 回车\r和换行\n
- \r\n 回车和换行
- Java中的回车换行符/n /r /t
- Java中的回车换行符/n /r /t
- Java中的回车换行符/n /r /t
- Java中的回车换行符/n /r /t
- Java中的回车换行符/n /r /t
- [转]Java中的回车换行符/n /r /t
- Java中的回车换行符/n /r /t
- Java中的回车换行符/n /r /t
- Java中的回车换行符/n /r /t
- Java中的回车换行符/n /r /t
- 回车\r 换行\n
- 回车/r和换行/n的区别
- 换行符‘/n’和回车符‘/r’
- 换行符‘\n’和回车符‘\r’
- 第八章 拦截器机制(一) 拦截器介绍
- 蜕变的Judy年中总结
- Vitya and Strange Lesson(01字典树)
- 快速排序-java实现
- 初始CSS
- Java中的回车(\r)和换行(\n)
- 【01】vue.js — 简析入门
- Jmeter实现百分比业务比例
- 用Virtual User Generator 录制
- 京东面试题分析
- 命令模式
- JupyterNotebook配置
- 逆向入门--第一次的HelloWorld
- 字符串问题---字典树(前缀树)的实现