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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

编写程序,从键盘接收一个字符串,对字符串中的字母进行大小写互转(大写字母转成小写,小写字母转成大写)。
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()方法返回的是什么?

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

3 个回复

倒序浏览
用啦\r\n 回车符,来判断循环的结束。所以当你敲入回车符时,循环停止。当读取到最后read( ),返回的是(-1 )负一。

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
else if(x=='\n')
         break;//break的功能就是终止循环。当读到输入的末尾时程序就会结束了。
read方法读到文件末尾时返回-1

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
第一个程序到如果判断为\n 则会执行break就会停掉程序。
第二个程序则不会停掉,除非按Ctrl+C 。
读到最后read返回的是什么,则看你输入的是什么了。

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马