2 helloselang92 helloselang92 于 2014.07.31 00:18 提问

初学者JAVA编写的程序问题,请帮我看看哪里错了

这个是程序
mport java.io.*;
public class shuru{
public static void main(String[] args){
try
{

            InputStreamReader is=new InputStreamReader(System.in);
            BufferedReader br= new BufferedReader(is);
              String s;
 **(1)System.out.print("请输入一行内容(直接回车退出程序):")** 
            while((s=br.readLine())!=null&&s.length()!=0);
              {

                      System.out.print("你输入的内容为:"+s);
                      System.out.print("请输入一行内容(直接回车退出程序):");   
               }
        }
     catch(IOException e)
        {
               e.printStackTrace();
        }
   }

}
运行结果:`

C:\Documents and Settings\Administrator\桌面>java shuru
请输入一行内容(直接回车退出程序):hello

你输入的内容为:请输入一行内容(直接回车退出程序):

以下是疑问:
1.为什么会变成这样子,我输完hello后打回车空了一行出来,没显示“你输入的内容为:hello”,再按回车变成“你输入的内容为:请输入一行内容(直接回车退出程序):”这样子了?

2.(1)处加粗的这一行为什么放在这里也行,程序执行的时候不是应该先执行try语句块的第一行的语句吗?那不是会变成先要在控制台输入hello,然后才出现“请输入一行内容(直接回车退出程序):”吗?如果是上面那样,岂不是先执行try语句块的第4行,然后才执行1.2行。。。

新人,正在自学中。。。。。。求解

3个回答

liuqi2577252
liuqi2577252   2014.07.31 09:25
已采纳

1.while(...)后面分号去掉,结果就是:
请输入一行内容(直接回车退出程序):aa
你输入的内容为:aa请输入一行内容(直接回车退出程序):

2.是按顺序执行的, 第一句只是个流 ,你可以加个断点看看

helloselang92
helloselang92 谢谢。明白了
接近 4 年之前 回复
liuqi2577252
liuqi2577252 在这里 流可以看成是一条与键盘连接的路,只是打开了个通道 看不到效果啊。键盘输入了才能读 所以停在了读的前一句。键盘输入的内容 顺着 流那条路 过来了 只要你不读 就没有效果。就是说读之前的操作 该怎么来还是按顺序执行着。
接近 4 年之前 回复
helloselang92
helloselang92 InputStreamReader is=new InputStreamReader(System.in);这句不是有个System.in ,那不是光标要停下来等待用户输入吗?为什么它是先执行(1)处。然后才回到第一句呢?
接近 4 年之前 回复
u012585224
u012585224   2014.07.31 21:54

你用文件字符流,没创建文件不对吧。第一行引入包的单词少打了一个i,个人建议在try里面第一句写File f=new File("C\Documents and Settings"," shuru.java");然后InputStreamReader is=new InputStreamReader(f);

helloselang92
helloselang92 额,按楼下改的可以了,i少打了,但是我原本程序没少,我现在不明白的就是第二个问题了
接近 4 年之前 回复
yzy1987523
yzy1987523   2014.08.05 15:25

一眼就看出来import少打了个i,然后就看不懂了,我也初学☺

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!