提问人:Erl_könig 提问时间:2/26/2023 最后编辑:Erl_könig 更新时间:2/27/2023 访问量:65
在 Java 中填充数组时出现问题
Issues filling an array in Java
问:
我正在尝试用另一个文件中的唯一值填充数组。此文件总共有大约 20 个整数,其中 10 个是唯一的,10 个是副本。用户在 main 中输入数组的大小和文件的名称。
我认为问题来自这个 while 循环,它旨在填充数组,整理出重复项。
目前,它只成功对文件中 20 个整数中的 11 个进行排序。
private static int read(String inFileName, int[] list) {
int size = 0;
int i= 0;
Scanner inFile = null;
int val = 0;
int trash = 0;
boolean ID = false;
int Unique = 0;
int dupe = 0;
int lineCount = 0;
try {
inFile = new Scanner(new File(inFileName));
while (inFile.hasNext()){
lineCount++;
try{
val = inFile.nextInt();
if(val < 0) {
trash++;
continue;
}
for(i = 0; i< size ;i++){
if(list[i] == val){
ID = true;
dupe++;
}
}
if (ID == false && size<list.length){
list[size] = val;
size++;
Unique++;
}
}
catch (InputMismatchException e){
trash++;
inFile.nextLine();
}
}
System.out.println("lines: " + lineCount + ", unique: " + Unique + ", dupes: " + dupe + ", trash: " + trash);
}
catch (FileNotFoundException e) {
System.out.println("Error in opening " + inFileName);
}
return size;
}
到目前为止,我已经尝试添加不同的 if 语句来尝试指定什么是唯一的,什么是副本。这通常有助于用正确数量的整数填充数组,但不能用唯一的整数填充数组。它似乎跳过了相当多的唯一整数,并用副本填充数组。我被困住了,任何建议将不胜感激。
答:
0赞
Jai Prakash
2/27/2023
#1
评论了您的代码并对其进行了更改,然后应该可以工作。
private static int read(String inFileName, int[] list) { int size = 0; int i= 0; Scanner inFile = null; int val = 0; int trash = 0; // boolean ID = false; remove int Unique = 0; int dupe = 0; int lineCount = 0; try { inFile = new Scanner(new File(inFileName)); while (inFile.hasNext()){ boolean ID = false; // Add here lineCount++; try{ val = inFile.nextInt(); if(val < 0) { trash++; continue; } for(i = 0; i< size ;i++){ if(list[i] == val){ ID = true; dupe++; } } if (ID == false && size<list.length){ list[size] = val; size++; Unique++; } } catch (InputMismatchException e){ trash++; inFile.nextLine(); } } System.out.println("lines: " + lineCount + ", unique: " + Unique + ", dupes: " + dupe + ", trash: " + trash); } catch (FileNotFoundException e) { System.out.println("Error in opening " + inFileName); } return size; }
评论