首页 > 解决方案 > 我的循环正在用数字七、六次填充我的数组,为什么?

问题描述

我正在编写一个程序来读取文件并将字符串存储在arraylist中,并将ints存储在数组中。该文件包含以下格式的字符串和整数: String int

我已经让字符串部分开始工作,我想知道为什么下面的代码用数字 7 填充我的数组,而不是正确的数字六次。

正确的输出是:

12, 14, 16, 31, 42, 7

但它给出了:

7, 7, 7, 7, 7, 7

代码:

BufferedReader buffy = new BufferedReader(new FileReader(fileName));
     while((str = buffy.readLine()) != null) {
        for(int i = 0; i <= arrayInt.length - 1; i++) {
           for(int k = 0; k <= str.length()-1; k++) {
              if(str.substring(k, k + 1).equals(" ")) {
                 String nums = str.substring(k+1);
                 arrayInt[i] = Integer.parseInt(nums);
              }
           }
        }
     }
     buffy.close();

标签: javaarraysloopsoutput

解决方案


发生这种情况是因为对于文件中的每一行,您都填充了整个数组。

试试这个:

 int i = 0;
 BufferedReader buffy = new BufferedReader(new FileReader(fileName));
 while((str = buffy.readLine()) != null) {
    if(i < arrayInt.length) {
       for(int k = 0; k <= str.length()-1; k++) {
          if(str.substring(k, k + 1).equals(" ")) {
             String nums = str.substring(k+1);
             arrayInt[i] = Integer.parseInt(nums);
             break;
          }
       }
       i++;
    }
 }
 buffy.close();

你也可以使用indexOf

 int i = 0;
 BufferedReader buffy = new BufferedReader(new FileReader(fileName));
 while((str = buffy.readLine()) != null) {
    if(i < arrayInt.length) {
       int k = str.indexOf(" ");
       if(k!=-1) {
          String nums = str.substring(k+1);
          arrayInt[i] = Integer.parseInt(nums);
       }
       i++;
    }
 }
 buffy.close();

推荐阅读