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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. import java.io.*;
  2. import java.util.*;
  3. class Test115
  4. {
  5.         public static void main(String[] args)throws IOException
  6.         {
  7.                 BufferedReader in=new BufferedReader(new InputStreamReader(System.in)); //从键盘录入数值
  8.                 String str = in.readLine();
  9.                 int conut = Integer.parseInt(str);
  10.                
  11.                 int num = 0 ;//判断打印和结束标记
  12.                 BufferedReader fis = new BufferedReader(new FileReader("E:\\1.txt"));//和对应的文件想关联
  13.                 String len = null;
  14.                 while((len = fis.readLine()) != null)
  15.                 {
  16.                    if(len.equals(conut+""))        //判断要打印的图形,如果找到就让num+1,让下面去判断
  17.                    {
  18.                            num++;
  19.                    }

  20.                    if(num == 1)        //找到图形开头
  21.                    {
  22.                          if(!len.equals(conut+""))        //判断图形开头不打印
  23.                                System.out.println(len);
  24.                    }

  25.                    if(num == 2)//找到图形结尾
  26.                    {
  27.                           if(!len.equals(conut+""))        //判断图形结尾不打印
  28.                                 System.out.println(len);
  29.                                 break;
  30.                    }
  31.                 }
  32.                 fis.close();
  33.         }
  34. }
复制代码
感谢各位朋友的回答,特别是kaka小明    提供的思路

我想如果大家能把这个,图形打印出来就好了,这样就可以把图形写到文件里去呢。以后要是输入同样的数字,就先看看文件里有没有,如果有就直接把要的图案切出来输出。

没有就继续打印,完了在接着写到文件里存进去,以后又可以在找,这样是不是可以提高效率呢?


未命名.jpg (67.78 KB, 下载次数: 0)

问题已解决

问题已解决

1.zip

367 Bytes, 下载次数: 27

读取文件1.txt

5 个回复

倒序浏览
尹桥印 发表于 2013-5-1 10:19
楼主的精神值得学习。其实我也没有想到用io这一点。也是看到你的帖子才想到的,看来思维方式得多元化才行 ...

嘿嘿,相互学习啊:)
回复 使用道具 举报
  1. public class RundomAccessText {

  2.         /**按num读取文本数据               0
  3.          * 4->seek 15一行//15*5       75
  4.          * 5->seek 18一行//18*6       108   +75=183
  5.          * 偏移量的规律是:(n
  6.          * @param args
  7.          */
  8.         public static void main(String[] args)throws Exception {
  9.                 getAccess(4);
  10.         }
  11.         public static void getAccess(int n)throws Exception{
  12.                 RandomAccessFile ra=new RandomAccessFile("C:\\Users\\末末\\Desktop\\rundom.txt","r");
  13.                 int seekLen=0;
  14.                 for(int i=4;i<=n;i++)
  15.                         seekLen+=(12+(i-3)*3)*(i+1);
  16.                 ra.seek(seekLen);
  17.                 for(int i=0;i<n+2;i++){
  18.                         System.out.println(ra.readLine());
  19.                 }
  20.                 ra.close();
  21.         }
  22.        
  23. }
复制代码
这个效率高点吧,不用全部把文件都读出来.只需要按偏移量读就行了.
关于读取的文件,我有设定.必须按我的文件格式来,不然偏移量计算会出错.当然也可以写成自动判断的,就是只读一行.列成字符串,判断长度.
你这个思路不好,因为解题的关键在于完全掌握.实现自动化.如果达不到这个要求,仅按需求手动做出来.没有多大意义...
  1. *  *  *  *  *
  2. *  7  8  9  *
  3. *  6  1  2  *
  4. *  5  4  3  *
  5. *  *  *  *  *
  6. *  *  *  *  *  *
  7. *  7  8  9  10 *
  8. *  6  1  2  11 *
  9. *  5  4  3  12 *
  10. *  16 15 14 13 *
  11. *  *  *  *  *  *
  12. *  *  *  *  *  *  *
  13. *
  14. *
  15. *//测试
  16. *
  17. *
  18. *  *  *  *  *  *  *
复制代码
回复 使用道具 举报
陈圳 发表于 2013-5-1 17:00
这个效率高点吧,不用全部把文件都读出来.只需要按偏移量读就行了.
关于读取的文件,我有设定.必须按我的文件 ...

恩,你的代码看懂了,效率的确高。
这程序没什么实用性,就算弄着玩吧。:)
回复 使用道具 举报
      我是来学习一下的 看看 呵呵
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马