【问题标题】:Infinite loop with BufferedReader带 BufferedReader 的无限循环
【发布时间】:2015-02-03 17:17:17
【问题描述】:

我正在尝试使用 BufferedReader 和 StringTokenizer 读取用户的某些输入,但输入没有终止。

  BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  StringTokenizer st;
  st = new StringTokenizer(reader.readLine());
  N = Integer.parseInt(st.nextElement().toString());
  M = Integer.parseInt(st.nextElement().toString());
  System.out.println(N+"\n"+M);
  for(int i = 0; i < M; i++) {
      st = new StringTokenizer(reader.readLine());
      System.out.println(st);
      int t1 = Integer.parseInt(st.nextElement().toString());
      int t2 = Integer.parseInt(st.nextElement().toString());
      ad.add(t2);
      path.put(t1, ad);
      System.out.println(t1+"and"+t2);

      //path.put(t2, t1);
      System.out.println(path);
  }
  st = new StringTokenizer(reader.readLine());

  int s = Integer.parseInt(st.nextElement().toString());
  int t = Integer.parseInt(st.nextElement().toString());

但它确实脱离了循环(通过使用打印语句得出结论)。

而且输入格式是:

3 3
1 3
1 2
2 3
1 3

【问题讨论】:

    标签: java string bufferedreader tokenize


    【解决方案1】:

    我刚刚运行了它,它确实跳出了循环。我所做的只是删除未编译的行(ad.add(t2) 和下一行)并将“int”放在变量名之前...

    public static void main(String[] args) throws Exception {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;
        st = new StringTokenizer(reader.readLine());
        int N = Integer.parseInt(st.nextElement().toString());
        int M = Integer.parseInt(st.nextElement().toString());
        System.out.println(N + "\n" + M);
        for (int i = 0; i < M; i++) {
            st = new StringTokenizer(reader.readLine());
            System.out.println(st);
            int t1 = Integer.parseInt(st.nextElement().toString());
            int t2 = Integer.parseInt(st.nextElement().toString());
            System.out.println(t1 + "and" + t2);
    
        }
        st = new StringTokenizer(reader.readLine());
    
        int s = Integer.parseInt(st.nextElement().toString());
        int t = Integer.parseInt(st.nextElement().toString());
    }
    

    输出...

    3 3 (I typed this)
    3
    3
    1 3 (I typed this)
    java.util.StringTokenizer@46f5331a
    1and3
    1 2 (I typed this)
    java.util.StringTokenizer@bee145b
    1and2
    2 3 (I typed this)
    java.util.StringTokenizer@3b7a687b
    2and3
    1 3 (I typed this)
    

    程序随后终止

    【讨论】:

    • 啊,它现在对我也终止了,即在我删除了相同的行之后。想知道这有什么问题吗?
    • @AshishPatil 什么是“广告”和“路径”?
    • 私有静态HashMap> path = new HashMap>();私有静态 LinkedList ad = new LinkedList();
    • @AshishPatil 我重新添加了原始行并将字段放入您的评论中,它仍然有效......
    • 感谢您的帮助。我弄清楚错误是什么。其实是'minPath'方法里面的另一个while循环,和上面的代码没什么关系哈哈。
    猜你喜欢
    • 1970-01-01
    • 2020-10-31
    • 2013-12-01
    • 2021-04-29
    • 1970-01-01
    • 2012-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多