Java for循环正在无限期执行

Java for循环正在无限期执行,java,Java,我无法理解,为什么即使条件给出正确,for循环仍会无限期地执行,请帮助我,这让我发疯 public static void main(String args[] ) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n=Integer.parseInt(br.readLine()); //System.out.

我无法理解,为什么即使条件给出正确,for循环仍会无限期地执行,请帮助我,这让我发疯

 public static void main(String args[] ) throws Exception {

       BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

      int n=Integer.parseInt(br.readLine());

     //System.out.println(n);
      long[] a = new long[n+1];
      long[] b = new long[n+1];

      for(int k=1;k<=n;k++)
      {
          String[] str = br.readLine().split(" ");
          a[k]=Long.parseLong(str[0]);
          b[k]= Long.parseLong(str[1]);

      }
   }
 }

java.io.BufferedReader.readline方法读取一行文本

一条线路被认为是由任何一条线路馈线终止的 “\n”、回车号“\r”或其后的回车号 立即通过换行


基本上,您没有传递任何输入,br.readLine正在不断地从System.in读取,因为它无法识别在何处终止该行。

您的程序在我的机器上运行良好

我建议你做的一个改变是使用0而不是1

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
long[] a = new long[n];
long[] b = new long[n];

for (int k = 0; k < n; k++) {
    String[] str = br.readLine().split(" ");
    a[k] = Long.parseLong(str[0]);
    b[k] = Long.parseLong(str[1]);
    }
System.out.println(Arrays.toString(a) + " " + Arrays.toString(b));

Output:
3
1 2
4 3
6 2
[1, 4, 6] [2, 3, 2]

如果这样做,根据逻辑,数组将只包含前两个数字,而忽略其余数字。由于readLine考虑了整行内容。

我不完全理解您试图实现的目标,但代码会编译并运行,然后使用以下示例输入退出: 二,

5.5


6

检查n的值。您是否尝试过使用一些原始数据,循环中到底发生了什么?您可能遇到异常,或者n为0。它工作正常。给出一个输入样本和你所期望的。对于n的任何值,它的读数是无限次的。
3 
1 2 3 4 5 6