java - 我的循环用数字七、六次填充数组,为什么?

标签 java arrays loops output

我正在编写一个程序来读取文件并将字符串存储在 arraylist 中并将整数存储在数组中。该文件包含字符串和整数,格式为: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();

最佳答案

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

试试这个:

 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();

关于java - 我的循环用数字七、六次填充数组,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53531572/

相关文章:

c++ - C++中的'rand'函数?

c++ - 虽然在 y/n 输入 C++ 后不会开始循环

java - Spring异常错误

java - Java 中使用 ExecutorService 的多线程代码无法返回,为什么?

iphone - ios 将数组添加到前面的数组

javascript - 如何使数组过滤器与异步函数端一起工作?

java - 音节数、循环问题

java - 从 Android 调用使​​用 Spring Security 保护的 REST Web 服务

java - 锚定 Pane 中元素的顺序

c - 当数组在其他文件中且函数在其他文件中时,查找整数或 float 组的大小?