黑马程序员技术交流社区

标题: 如何获取控制台程序的输出流 [打印本页]

作者: ccywhut    时间: 2013-6-7 17:26
标题: 如何获取控制台程序的输出流
本帖最后由 ccywhut 于 2013-6-10 21:11 编辑

用控制台程序输出九九乘法表
public static void main(String[] args) throws Exception{        
Console cons = System.console();//获取控制台程序的对象实例
        if(cons!=null){
        for (int i = 1; i <= 9; i++)
        {
           for (int j = 1; j <= i; j++)
         {   
         Console c1=cons.format("{0}*{1}={2}" + " ", i, j, i * j);  
   //使用指定格式字符串和参数将格式化字符串写入此控制台的输出流中
         c1.flush();
         String s2=null;
             while((s2=c1.readLine())!=null) //使用返回得到的控制台读取单行文本
          {
             cons.flush();
             cons.printf(s2);
          System.out.println(s2);
             }
         }
           cons.writer().println();
        }
             String s1=null;
             while((s1=cons.readLine())!=null)  //使用原先的控制台读取单行文本
        {
             cons.flush();
             cons.printf(s1);
             System.out.println(s1);
             }
       }

  为啥readLine()方法都读取不到数据,是不是没有获取到控制台的输出流,求教大神获取方法?
作者: 李征    时间: 2013-6-7 19:18
楼主你好,虽然看不太懂你的代码,但是我这里试验了一下,可能是Console c1=cons.format("{0}*{1}={2}" + " ", i, j, i * j); 这句话没有读到控制台输入的数字,我这里写了点代码,仅供参考:
Console cons = System.console();                                               //获取控制台程序的对象实例
                        if(cons!=null)
                                {
                                String c = new String(cons.readLine("乘数:"));
                                int i = Integer.valueOf(c).intValue();                  //将String类型转化成int
                                String bc = new String(cons.readLine("被乘数:"));
                                int j = Integer.valueOf(bc).intValue();
                                cons.printf(i+"*"+j+"="+i*j);                           //输出
                                }
作者: 夜默    时间: 2013-6-10 10:54
楼主你好  如果帖子的问题已经解决,请把帖子的类型改为“已解决”。





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