黑马程序员技术交流社区

标题: IO流,这是bug还是程序不严谨造成的?尽快..... [打印本页]

作者: smile_joe    时间: 2013-4-24 15:52
标题: IO流,这是bug还是程序不严谨造成的?尽快.....
本帖最后由 smile_joe 于 2013-4-25 21:05 编辑

package cn.joe.io;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;

public class Test12 {
        public static void main(String[] args) throws IOException {
//                创建键盘输入流
                System.out.println("请输入:");
//                1.7新特性应用
                try(
//                InputStreamReader isr=new InputStreamReader(System.in);
                        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
                        BufferedWriter bw=new BufferedWriter(new FileWriter("text.txt"));)
                {
//                        String s;
//                        while循环,遇到quit跳出
                        while(true) {
                                String s=br.readLine();
                                if("quit".equals(s)) {
                                        break;
                                }
//                                写入,换行
                                bw.write(s);
                                bw.newLine();
                        }
                }
        }
}
//1.请输入:
//        成绩,99                                                                                                                                                                                            
//        quit---输入正常退出-写入"text.txt"得到: chengjich成绩,99               
//2.请输入:
//        成绩,99,99--这样输入
//        quit---ok
//3.请输入:
//        中国,你好
//        ok-写入"text.txt"得到: zhongguoz中国,你好
//4.请输入:
//成绩,99,99,99--这样输入
//quit----换行第一次输入,跳不出
//quit--------------按到第二次quit才能跳出?运行该程序再次输入相同的数据,就正常第一次"quit"跳出
//5.输入:李鹏,99,99,99--得到下面,同样是第二次quit才跳出,运行该程序再次输入相同的数据,就正常第一次"quit"跳出
//lipeng李鹏,99,99,99
//lipenlipeliplilquit
//6.输入:小李,99,98,99---得到下面,同样是第二次quit才跳出,运行该程序再次输入相同的数据,就正常第一次"quit"跳出
//xiaoxi小李,99,98,99
//axixwwawquit

//请问为什么1.3.5.6得到的结果前面有那些英文,那英文又代表了什么?---这个我还与到几次,请一定尽快帮忙说说
//请问4.5.6在输入数据时,第二行quit没效果,第三行才跳出?运行该程序再次输入相同的数据,就正常第一次"quit"跳出?
//这是bug 还是我的程序不严谨造成的

作者: 黄茂霖    时间: 2013-4-24 17:06
你的程序是没问题的,出现英文的问题可能是你的输入法导致的。
控制台输出本来就有些BUG,有时候出现控制不能输入的问题,需要重新运行程序。
程序的健壮性不好,要养成关闭资源的好习惯啊!~
代码:
  1. package com.itcast.itheima;

  2. import java.io.BufferedReader;
  3. import java.io.BufferedWriter;
  4. import java.io.FileWriter;
  5. import java.io.IOException;
  6. import java.io.InputStreamReader;

  7. public class IOTest {
  8.         public static void main(String[] args) throws IOException {
  9. //                创建键盘输入流
  10.                 System.out.println("请输入:");
  11.                 BufferedReader br = null;
  12.                 BufferedWriter bw = null;
  13. //                1.7新特性应用
  14.                 try{
  15. //                InputStreamReader isr=new InputStreamReader(System.in);
  16.                                br=new BufferedReader(new InputStreamReader(System.in));
  17.                         bw=new BufferedWriter(new FileWriter("d:\\1.txt"));
  18.                
  19. //                        String s;
  20. //                        while循环,遇到quit跳出
  21.                         while(true) {
  22.                                 String s=br.readLine();
  23.                                 if("quit".equals(s)) {
  24.                                         break;
  25.                                 }
  26. //                                写入,换行
  27.                                 bw.write(s);
  28.                                 bw.newLine();
  29.                                 bw.flush();
  30.                         }
  31.                 }catch(Exception e){
  32.                         e.printStackTrace();
  33.                 }finally{
  34.                        
  35.                         if(bw != null){
  36.                                 bw.close();
  37.                         }
  38.                         if(br != null){
  39.                                 br.close();
  40.                         }
  41.                 }
  42.         }
  43. }
复制代码

作者: xiaoHei    时间: 2013-4-24 18:20
shenqi 发表于 2013-4-24 17:06
你的程序是没问题的,出现英文的问题可能是你的输入法导致的。
控制台输出本来就有些BUG,有时候出现控制不 ...

你的这个代码编辑器是怎么弄出来的?
作者: 黄茂霖    时间: 2013-4-24 18:24
本帖最后由 shenqi 于 2013-4-24 18:27 编辑
xiaoHei 发表于 2013-4-24 18:20
你的这个代码编辑器是怎么弄出来的?

留言框上的工具栏就有,该图标为<> 符号 如果实在不知道你在代码前后添加:
  1. [code]   代码..   
复制代码
[/code]

作者: xiaoHei    时间: 2013-4-24 18:39
shenqi 发表于 2013-4-24 18:24
留言框上的工具栏就有,该图标为 符号 如果实在不知道你在代码前后添加:[/code]
...

嗯哪  谢谢啊
作者: 孙浩    时间: 2013-4-24 18:45
你在输入中文时鼠标光标不会自动换行,雪要手动换行。
     在输入英文时控制台光标会自动换行。
输入中文时:先会把拼音敲出来 ,敲空格后才会打出汉字,这导致read()方法会全部读取出来,

QQ截图20130424183915.png (399 Bytes, 下载次数: 16)

QQ截图20130424183915.png

作者: smile_joe    时间: 2013-4-24 22:27
shenqi 发表于 2013-4-24 17:06
你的程序是没问题的,出现英文的问题可能是你的输入法导致的。
控制台输出本来就有些BUG,有时候出现控制不 ...

请问//请问4.5.6在输入数据时,第二行quit没效果,第三行才跳出?运行该程序再次输入相同的数据,就正常第一次"quit"跳出?

作者: smile_joe    时间: 2013-4-24 22:29
shenqi 发表于 2013-4-24 17:06
你的程序是没问题的,出现英文的问题可能是你的输入法导致的。
控制台输出本来就有些BUG,有时候出现控制不 ...

我这里的流已关闭,上面写道1.7新特性  try( ) {  }




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