黑马程序员技术交流社区

标题: 为什么读到的一行变成了两行,像这一行就是bridle ... [打印本页]

作者: 江南雨    时间: 2013-5-24 07:31
标题: 为什么读到的一行变成了两行,像这一行就是bridle ...
本帖最后由 江南雨 于 2013-5-24 13:00 编辑
  1. package com.xiaoye.random;

  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.FileNotFoundException;
  5. import java.io.FileOutputStream;
  6. import java.io.InputStream;
  7. import java.io.OutputStream;
  8. import java.util.Comparator;
  9. import java.util.Scanner;
  10. import java.util.TreeSet;

  11. public class RandomLine {

  12.         public static void main(String[] args) throws FileNotFoundException {
  13.                 String filepath = "src\\a.txt";
  14.                 String filename = filepath.substring(filepath.lastIndexOf("\\") + 1);
  15.                 String pathname = "lib" + "\\" + filename;
  16.                 System.out.println(pathname);
  17.                 File file = new File(filepath);
  18.                 File outfile = new File(pathname);
  19.                 InputStream in = new FileInputStream(file);
  20.                 Scanner reader = new Scanner(in);
  21.                 TreeSet<String> set = new TreeSet<String>();
  22.                 while (reader.hasNextLine()) {
  23.                         String s = reader.next();//假如这里是到 bridle               n.笼子;束缚 vt.抑制这一行,可是为什么变成了两行呢?在a.txt文件中它确实是只有一行啊 !!

  24.                         System.out.print(s + "\t\t");
  25.                         System.out.println(s.length());
  26.                         set.add(s);
  27.                 }
  28.                 System.out.println("===========================");
  29.                 for (String s : set) {
  30.                         System.out.println(s);
  31.                 }
  32.                 // OutputStream out=new FileOutputStream(outfile);

  33.         }

  34. }

  35. class MyComparator<T> implements Comparator<T> {

  36.         @Override
  37.         public int compare(T o1, T o2) {
  38.                 String t1 = (String) o1;
  39.                 String t2 = (String) o2;
  40.                 if (t1.length() > t2.length()) {
  41.                         return 1;
  42.                 } else if (t1.length() < t2.length()) {
  43.                         return -1;
  44.                 }
  45.                 return 0;
  46.         }

  47. }
  48. 下面是我的a.txt文件
  49. name:             n:名字,姓名
  50. native:本地的
  51. ative:活跃
  52. bridegroom           n.新郎
  53. bridge               vt.架桥于,用桥连接
  54. bridle               n.笼子;束缚 vt.抑制
  55. brightness           n.明亮,辉煌,聪明
  56. broaden              vt.&vi.放宽,变阔
  57. bronze               n.青铜色
  58. brood                vt.沉思vi.郁闭地沉思
  59. Buddhism             n.佛教,释教
  60. budget               n.预算,预算案
  61. buffalo              n.水牛;水陆坦克
  62. bug                  n.虫子;臭虫
  63. bugle                n.军号,喇叭
  64.    bull                 n.买空的证券投机商
  65.    bulletin             告示,公告,公报
  66.    coke                 n.焦炭 vt.&vi.炼焦
  67.    collaborate          vi.协作,合作;协调
  68.    collide              vi.碰撞;冲突,抵触
  69.    colonial             a.殖民地的,殖民的
  70.    colonist             n.移民;殖民地居民
  71.    combat               vt.跟…战斗 vi.格斗
  72.    combustion           n.燃烧;氧化;骚动
  73.    comedy               n.喜剧;喜剧场面
  74.    commence             vt.开始 vi.获得学位
  75.    commend              vt.称赞,表扬;推荐
  76.    commission           n.委托,委任;委托状
  77.    commodity            n.日用品,商品,物品
  78.    commonplace          a.平凡的 n.平常话
  79.    commonsense          a.有常识的
  80.    commonwealth         n.共和国;联邦
  81.    compact              a.紧密的 vt.使紧凑
  82.    comparable           a.可比较的;类似的
  83.    compatible           a.一致的;兼容制的
复制代码

作者: 刘胜寒    时间: 2013-5-24 07:33
楼主想要表达什么???
作者: 江南雨    时间: 2013-5-24 07:39
刘胜寒 发表于 2013-5-24 07:33
楼主想要表达什么???

就是说我想把a.txt文件中的每一行列出来,但是在a。txt文件中明明是只占一行,为什么输出却不是一行,原来的一行变成了两行呢?如  (commence             vt.开始 vi.获得学位  )这一行


作者: 刘胜寒    时间: 2013-5-24 07:48
江南雨 发表于 2013-5-24 07:39
就是说我想把a.txt文件中的每一行列出来,但是在a。txt文件中明明是只占一行,为什么输出却不是一行,原 ...

String s = reader.next(); 改成reader.nextLine();试一试
要么把前面的reader.hasNextline();换成hasnext()。
前后两个不一致。。
作者: 江南雨    时间: 2013-5-24 07:53
刘胜寒 发表于 2013-5-24 07:48
String s = reader.next(); 改成reader.nextLine();试一试
要么把前面的reader.hasNextline();换成hasnex ...
  1. 没用输出结果还是不是一行,原来的一行变成了两行(但是有的却是一行 native:本地的                10
  2. ),输出结果如下:

  3. name:                5
  4. n:名字,姓名                7
  5. native:本地的                10
  6. ative:活跃                8
  7. bridegroom                10
  8. n.新郎                4
  9. bridge                6
  10. vt.架桥于,用桥连接                11
  11. bridle                6
  12. n.笼子;束缚                7
  13. vt.抑制                5
  14. brightness                10
  15. n.明亮,辉煌,聪明                10
  16. broaden                7
  17. vt.&vi.放宽,变阔                12
  18. bronze                6
  19. n.青铜色                5
  20. brood                5
  21. vt.沉思vi.郁闭地沉思                13
  22. Buddhism                8
  23. n.佛教,释教                7
  24. budget                6
  25. n.预算,预算案                8
  26. buffalo                7
  27. n.水牛;水陆坦克                9
  28. bug                3
  29. n.虫子;臭虫                7
  30. bugle                5
  31. n.军号,喇叭                7
  32. bull                4
  33. n.买空的证券投机商                10
  34. bulletin                8
  35. 告示,公告,公报                8
  36. coke                4
  37. n.焦炭                4
  38. vt.&vi.炼焦                9
  39. collaborate                11
  40. vi.协作,合作;协
复制代码

作者: 金辉    时间: 2013-5-24 08:55
改成String s = reader.nextLine();//假如这里是到 bridle   
原来是reader.next
结果如下

QQ截图20130524085354.png (22.97 KB, 下载次数: 0)

QQ截图20130524085354.png

作者: 刘胜寒    时间: 2013-5-24 09:15
有一个是定义分隔符的,我给你查查。
用useDelimiter();在Scanner类下面,指定分割符号,系统默认是 空格,制表符,回车。你可以指定分隔符为回车"\n";

如果再不行我也爱莫能助。。。
作者: 江南雨    时间: 2013-5-24 12:55
金辉 发表于 2013-5-24 08:55
改成String s = reader.nextLine();//假如这里是到 bridle   
原来是reader.next
结果如下

嗯,谢谢你是对的!!
作者: 江南雨    时间: 2013-5-24 12:59
刘胜寒 发表于 2013-5-24 09:15
有一个是定义分隔符的,我给你查查。
用useDelimiter();在Scanner类下面,指定分割符号,系统默认是 空格, ...

我试了这种方法也行,谢谢




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