黑马程序员技术交流社区

标题: 键盘输入,用read()方法,读取到最后是返回-1么? [打印本页]

作者: 方青木    时间: 2014-3-2 20:16
标题: 键盘输入,用read()方法,读取到最后是返回-1么?
编写程序,从键盘接收一个字符串,对字符串中的字母进行大小写互转(大写字母转成小写,小写字母转成大写)。
import java.io.*;
class Text5
{
        public static void main(String[] args) throws IOException
        {
                InputStream in = System.in;
                StringBuffer sbuf = new StringBuffer();
                for(int x=in.read(); ; x=in.read())
                {
                        if(x=='\r')
                                continue;
                        else if(x=='\n')
                                break;
                        else
                        {
                                if(x<='z'&&x>='a')
                                        sbuf.append((char)(x-32));
                                else if(x<='Z'&&x>='A')
                                        sbuf.append((char)(x+32));
                                else
                                        sbuf.append((char)x);
                        }
                }
                System.out.println(sbuf.toString());
        }
}

中间for循环为甚写成这样,程序不会停止?
import java.io.*;
class Text5
{
        public static void main(String[] args) throws IOException
        {
                InputStream in = System.in;
                StringBuffer sbuf = new StringBuffer();
                for(int x=in.read(); x!=-1 ; x=in.read())
                {
                        if(x<='z'&&x>='a')
                                sbuf.append((char)(x-32));
                        else if(x<='Z'&&x>='A')
                                sbuf.append((char)(x+32));
                        else
                                sbuf.append((char)x);
                }
                System.out.println(sbuf.toString());
        }
}
当读取完键盘录入的数据,read()方法返回的是什么?
作者: 平凡成就非凡    时间: 2014-3-2 20:53
用啦\r\n 回车符,来判断循环的结束。所以当你敲入回车符时,循环停止。当读取到最后read( ),返回的是(-1 )负一。
作者: chenfc8578    时间: 2014-3-2 22:30
else if(x=='\n')
         break;//break的功能就是终止循环。当读到输入的末尾时程序就会结束了。
read方法读到文件末尾时返回-1
作者: 还是回去火星吧    时间: 2014-3-3 01:03
第一个程序到如果判断为\n 则会执行break就会停掉程序。
第二个程序则不会停掉,除非按Ctrl+C 。
读到最后read返回的是什么,则看你输入的是什么了。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2