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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© papercup 中级黑马   /  2014-4-3 01:03  /  972 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 papercup 于 2014-4-3 01:11 编辑

看视频自己写了代码发现个问题:为什么只能输入一个字符串啊?怎么解决呢?
  1. import java.io.*;

  2. public class TransDemo {
  3.         public static void main(String[] args) throws IOException{
  4.                 InputStream in = System.in;
  5.                 InputStreamReader isr = new InputStreamReader(in);
  6.                 BufferedReader buf = new BufferedReader(isr);
  7.                 String ch = null;
  8.                 while(true){
  9.                         if( (ch = buf.readLine()) != null && !("over".equals(ch)) ){
  10.                                 System.out.println(ch.hashCode());
  11.                         }
  12.                         break;
  13.                 }
  14.                 buf.close();
  15.                 isr.close();
  16.                 in.close();
  17.         }
  18. }
复制代码

11 个回复

倒序浏览
怎么回事,我改了下注释怎么什么都不显示了啊。。。
回复 使用道具 举报
你的输入源是控制台  输出源是哪里?
回复 使用道具 举报
我不知道你 是怎么理解你写的代码的,我给你加了简单的注释:
public static void main(String[] args) throws IOException{
        InputStream in = System.in;//从控制台获取数据输入流
        InputStreamReader isr = new InputStreamReader(in);//使用字符输入流
        BufferedReader buf = new BufferedReader(isr);//使用缓冲字符输入流
        String ch = null;
      //如果该行能读到内容并且内容不为"over",就打印该内容的哈希值
        while(true){
                if( (ch = buf.readLine()) != null && !("over".equals(ch)) ){
                        System.out.println(ch.hashCode());
                }
                break;
        }
        buf.close();
        isr.close();
        in.close();
}
回复 使用道具 举报
加个else吧

  1. public class TransDemo {
  2.         public static void main(String[] args) throws IOException {
  3.                 InputStream in = System.in;
  4.                 InputStreamReader isr = new InputStreamReader(in);
  5.                 BufferedReader buf = new BufferedReader(isr);
  6.                 String ch = null;
  7.                 while (true) {
  8.                         if ((ch = buf.readLine()) != null && !("over".equals(ch))) {
  9.                                 System.out.println(ch.hashCode());
  10.                         }else
  11.                                 break;
  12.                 }
  13.                 buf.close();
  14.                 isr.close();
  15.                 in.close();
  16.         }
  17. }
复制代码
回复 使用道具 举报

谢谢,解决了
回复 使用道具 举报
Engle 发表于 2014-4-3 08:22
我不知道你 是怎么理解你写的代码的,我给你加了简单的注释:
public static void main(String[] args) thr ...

我发帖后重新编辑了下,在代码块加了注释结果代码又显示不出来了。。已经解决了,谢谢你了
回复 使用道具 举报
将break 去掉 你这样子做就执行了一次就跳出去了 去掉就可以一直循环下去了
回复 使用道具 举报
lazy_xia 发表于 2014-4-3 09:29
将break 去掉 你这样子做就执行了一次就跳出去了 去掉就可以一直循环下去了 ...

去掉的话,over就结束不了了
回复 使用道具 举报
papercup 发表于 2014-4-3 09:35
去掉的话,over就结束不了了

那就加判断 你if里的条件分开来写 不过这样子还不如上面的加else 好使
回复 使用道具 举报
break不能去掉,去掉了编译不能通过,但是你可以加else,看下面代码。
  1. import java.io.*;
  2. public class TransDemo {
  3.         public static void main(String[] args) throws IOException{
  4.                 InputStream in = System.in;
  5.                 InputStreamReader isr = new InputStreamReader(in);
  6.                 BufferedReader buf = new BufferedReader(isr);
  7.                 String ch = null;
  8.                  while(true){
  9.                         if( (ch = buf.readLine()) != null && !("over".equals(ch)) ){
  10.                                 System.out.println(ch.hashCode());
  11.                         }
  12.                         //在这里要加一个else,像你的代码的话,不论if里面代码有没有执行,都得执行break语句,所以输入了一行字符后,就退出了循环。
  13.                         else{
  14.                                 break;
  15.                         }
  16.                 }
  17.                 buf.close();
  18.                 isr.close();
  19.                 in.close();
  20.         }
  21. }
复制代码
回复 使用道具 举报
  • while(true){
  • if( (ch = buf.readLine()) != null && !("over".equals(ch)) ){
  • System.out.println(ch.hashCode());
  • }
  • break;
  • }

第5行中的break;去掉就可以循环输入了!输入over时就结束了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马