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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

/**
需求:前几天,我就看到有人在这里发一个无规律的图形,问如何打印?
感想:
我们往控制台打印图形,是用ascii码打印的。
对于一些有规律的图形,我们可以用对应规律的控制语句进行打印
可是,当图形复杂且没有规律时,或者就只是图形规律非常复杂难找,
那我们该怎么办呢?为了减少大家的挠耳抓腮时的痛苦,现在我给大家
提供一个投机取巧的办法。
思路:
我们为何不这样考虑,找一个记事本,照着那个图形描一下。
(大家有没有发现控制台的页面和记事本的页面的结构都是差不多的。)
然后,再用输入输出语句把记事本里的东西原封不动的搬到控制台上呢?
(小小的注意:有些ascii码不能在记事本中显示,但是我们可以用相应的数字代替)
实例:
下面的代码与图形是我做的一个实例:
这是记事本c:\\ascii.txt里的内容
                           222
                        22      22
                      22            22
                      33  33   33   33
                    3333     33     3333
                    33 3    3333    3333
                     33      33     33
                       33          33
                         33       33
                         333333333333
这是在控制台显示的效果。
     
                    
                        
                    
                    
                   
                      
                       
                      
               
      */
import java.io.*;
class PrintCopy
{
public static void main(String[] args) throws IOException
{
  //建立输入流,设置源文件"c:\\ascii.txt"。
  BufferedReader bfr =
   new BufferedReader(new FileReader("c:\\ascii.txt"));
  //建立输出流,把控制台当做输出终端。
  BufferedWriter bfw =
   new BufferedWriter(new OutputStreamWriter(new PrintStream(System.out)));
  String line = null;
  while ((line=bfr.readLine())!=null)//输入一行字符串
  {
   //将字符串转成字符数组
   char[] chs = line.toCharArray();
   //将数字字符转成相应的ascii码输出
   for(int i= 0; i<chs.length ;i++)
   {
    if(chs[i]=='3')
     chs[i] = (char)3;
    if(chs[i]=='2')
     chs[i] = (char)2;
    bfw.write(chs[i]);//输出单个字符
   }
   bfw.newLine();//输出行终止符
  }
  //关闭流
  bfw.close();
  bfr.close();
}
}

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

1 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马