A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 袁春龙 黑马帝   /  2011-7-19 23:20  /  2960 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

搞不懂回车和换行?感觉都是Enter键?请问怎么解释。

评分

参与人数 1技术分 -1 收起 理由
admin -1 提问题得先自己想想!

查看全部评分

4 个回复

倒序浏览
黑马网友  发表于 2011-7-20 08:45:36
沙发

回复 楼主 的帖子

谨遵教诲。。。

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1 呵呵,给你加回来。

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-20 09:13:13
藤椅
\r是回车符,\n是换行符
在这里引用一个小典故:计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。
于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。
这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。
后来计算机发明了,回车换行也被应用到计算机操作系统上,有些操作系统就沿用了/r /n这个概念(例如windows),而有些操作系统就抛弃了/r回车这个概念(例如Unix),这就是为什么Unix系统下的文件在Windows里打开的话,原本段落分明的文字会变成在同一行显示,而Windows里的文件在Unix下打开的话,在每行的结尾可能会多出一个^M符号。

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1 能想到\r和\n,要是有代码演示更好。

查看全部评分

回复 使用道具 举报
编程实例:
将键盘上输入的字节逐一存储到一个数组中,当遇到回车换行符的时候,数组中的内容被转换成一个字符串,在屏幕上进行打印显示,如此重复直到键盘上输入的一行内容为”bye”时,就结束程序的运行

public class ReadLine {

        /**
         * Method main
         *
         *
         * @param args
         *
         */
        public static void main(String[] args) {
                // TODO: Add your code here
                byte[] buf=new byte[1024];
                String strInfo=null;
                int pos=0;
                int ch=0;
                System.out.println("please enter info:");
                while(true)
                {
                        try{
                                ch=System.in.read();
                        }catch(Exception e){e.printStackTrace();}
                        switch(ch)
                        {
                                case'\r':
                                        break;
                                case'\n':
                                        strInfo=new String(buf,0,pos);
                                        if(strInfo.equalsIgnoreCase("bye"))
                                        {
                                                return;
                                        }
                                        else
                                        {
                                                System.out.println(strInfo);
                                                pos=0;
                                                break;
                                        }
                                default:
                                        buf[pos++]=(byte)ch;
                        }
                }
        }
}
当我们在键盘上按下回车键的时候window操作系统会把按下回车这个动作当作\r和\n这个两个字符输入,也就等于一下子就输入了两个字符而unix操作系统就把按下回车键当作一个\n这个字符来输入,不管在什么操作系统上我们都可以用\n来作为一行输入结束的结束标记,只是在编程的时候我们需要注意如果是windows操作系统那么它会读取到\r这个字符,我们必须将这个字符与正常输入的普通字符区别开来,不让这个字符存储到上面程序中的buf数组里面去,如果不对其进行break处理,那么你输入abc字符后按下回车得到的打印效果就为abc\r。
如果你用的开发软件是Jbuilder,不管在什么操作系统中Jbuilder都把输入窗口中的回车换行符只用一个\n来表示,而有些人在编程的时候忽略了\r字符的存在可能而没有对\r字符进行专门的处理导致在Jbuilder环境下可以运行的程序到了windows下的JDK中运行的时候出现问题,比如说读取一个文件名叫abc.txt的文件,编程人员没有考虑\r在windows的JDK运行的时候实际上得到的内容为”abc.txt\r”
所有JDK去硬盘上读取文件的时候死活也读不到abc.txt\r,因为硬盘上只有abc.txt这个文件,但是在Jbuilder里面运行的时候没有问题,因为Jbuilder里面不会出现\r,这就是\r与\n需要注意的问题。
[ 本帖最后由 李龙涛 于 2011-07-20  10:03 编辑 ]
回复 使用道具 举报
黑马网友  发表于 2011-7-20 10:11:40
报纸
我用别人的电脑没有软件编写
我手写一个 有小错误  自己调一下
class Test{
public static void main(String args){
System.out.println("******");
System.out.print("******\n");
System.out.print("**\t****\n");







}


}


\r是回车符,\n是换行符
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马