zoukankan      html  css  js  c++  java
  • Android 关于java.util.NoSuchElementException错误

    写了一个从A文件复制到B文件的例子,其中要求去掉重复的行。

    于是想到了Set,这本来是很容易的事情,结果在向外写数据时抱错

    Java.util.NoSuchElementException

    网络上反复查证也没有相关的内容,于是自己慢慢的找,终于找到了。下面写出这个错误的例子及分析,希望能及时的帮助和我同样犯了小错误的菜鸟!

    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.OutputStreamWriter;
    import java.io.PrintWriter;
    import java.util.HashSet;
    import java.util.Iterator;
    import java.util.Set;
    
    public class Step01 {
    
     public static void main(String[] args) {
      Set<String> set = new HashSet<String>();
      File in = new File("Answer0712/aaa.txt");
      File out = new File("Answer0712/bbb.txt");
      InputStream is = null;
      OutputStream os = null;
      try {
       is = new FileInputStream(in);
       os = new FileOutputStream(out);
       BufferedReader br = new BufferedReader(new InputStreamReader(is));
       while (true) {
        String str = br.readLine();
        if (str == null)
         break;
        set.add(str);
       }
       // Iterator i = set.iterator();
       // while(i.hasNext()){
       // System.out.println("Null值判断:"+i.next());
       // }
       PrintWriter pw = new PrintWriter(new BufferedWriter(
         new OutputStreamWriter(os)), true);
       Iterator i = set.iterator();
       while (i.hasNext()) {
        System.out.println(i.next());  //这一句是罪魁祸首
        pw.println(i.next());
       }
       pw.flush();
      } catch (Exception e) {
       e.printStackTrace();
      } finally {
       try {
        is.close();
        os.close();
       } catch (IOException e) {
        e.printStackTrace();
       }
    
      }
    
     }
    }

    文章中标示黄色的那一句,本来是要打印出来,在控制台看看所写的数据是否正确。

    结果就出现了java.util.NoSuchElementException的错误提示 ,就是黄色的那一句,多了一个 迭代器的next()。

    所以错了。去掉它就好了,或者改为

    while (i.hasNext()) {
        String ss = (String) i.next();
        System.out.println(ss);
        pw.println(ss);
       }
  • 相关阅读:
    HDU 3879 Base Station 最大权闭合图
    自己定义头像处理,轻巧有用,非常多强大的小技巧在里面哦,快来赞美我一下吧^_^
    【Spring实战】—— 8 自动装配
    【Spring实战】—— 7 复杂集合类型的注入
    【Spring实战】—— 6 内部Bean
    【Spring实战】—— 5 设值注入
    【Spring实战】—— 4 Spring中bean的init和destroy方法讲解
    【Spring实战】—— 3 使用facotry-method创建单例Bean总结
    【Spring实战】—— 2 构造注入
    【Spring实战】—— 1 入门讲解
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/6698418.html
Copyright © 2011-2022 走看看