java - 我的循环正在用数字七、六次填充我的数组,为什么?
问题描述
我正在编写一个程序来读取文件并将字符串存储在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();
解决方案
发生这种情况是因为对于文件中的每一行,您都填充了整个数组。
试试这个:
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();
推荐阅读
- c++ - MFC SetRegistryKey 功能相反?我错过了什么?
- node.js - 使用 svg2img 时未定义的缓冲区
- angular - 如何在 OpenLayers 中通过拖放添加自定义样式
- r - R Studio - 相关方法“黄土”导致的错误?
- java - 我怎样才能从两个数字中得到中间?
- php - 使用 mpdf 库的 pdf 文件中的斜体印地语文本未正确显示。印地语和粗体印地语工作正常
- python - 在 Google Colab 上运行 simpletransformers 时出现“PanicException: no entry found for key”错误
- python - 从 tensorflow 对象检测实用程序导入 config_util 时出现导入错误
- python - 根据同一列中的另一个值保留最近的行
- react-native - 在 React Native 中显示 ActivityIndicator?