3
我是一個新的編碼器,最近我的班級學習了數組。我一整天都在爲這一項計劃任務着想。這不是因爲幾天,但我對此感到非常沮喪。按順序打印數組
我們必須打印出測試成績列表以及與其相關的相關ID。我們必須將測試分數從最高到最低排序,但不需要修改數組 - 所以沒有數組排序或任何類似的。 「建議的解決方案」說:
找到最大的得分,跟蹤其下標。
打印此分數以及相應的ID。
將該分數設置爲與其相反(這使其成爲最小的 分數!)。
重複步驟1-3,直到所有21分數都得到處理。
停止並打印適當的消息。
我一直在試圖遵守這些說明,因爲還有其他程序在本週的其餘時間將依賴於此。但是,我的方法有缺陷,因爲我的代碼打印最高分數爲110,238,26次迭代。 我在使用這段代碼時遇到了很多麻煩,這讓我非常沮喪。這是我到目前爲止:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Prog408a {
static Scanner inFile = null;
static Scanner inFile2 = null;
public static void main (String[]args) {
try {
// create scanner to read file
inFile = new Scanner(new File ("prog408a.dat"));
} catch (FileNotFoundException e) {
System.out.println("File not found!");
System.exit(0);
}
int [] ids = new int[26];
int [] scores = new int[26];
int first = 0;
int second = 0;
int counter = 0;
int max, maxid, supermax;
do {
ids [first] = inFile.nextInt();
scores [second] = inFile.nextInt();
first++;
second++;
} while (inFile.hasNextInt());
/* initial values of max, maxid */
System.out.println("ID\t\tScore");
maxid = ids[0];
supermax = scores[0];
max = scores[0];
int index=0;
while (counter < scores.length) {
for (int x = 0; x < scores.length - 1; x++) { // scroll through the indexes.
if (scores[x] > max) {
max = scores[x];
index = x; // keep the index of the biggest number.
}
max = -1 * (scores[index]);
}
System.out.println("The maximum score is " + ids[index] + ", " + scores[index]);
counter++;
}
}
}
這是什麼在數據文件中。
365 265
222 223
306 262
003 559
004 560
203 224
113 243
208 242
213 229
115 257
302 242
223 230
001 599
311 256
323 245
321 245
123 253
104 239
002 513
112 239
207 228
325 246
116 246
218 243
110 238
對不起,如果在帖子中有任何格式錯誤。
謝謝你的回覆。但是,在編輯我的代碼時,輸出會重複打印1,599和1,-599,直到while循環結束。我不知道這是爲什麼。 – Nikolas
對不起,我不檢查我的解決方案。我已修好它,它現在會工作。 –
謝謝,這個作品完美。你能解釋一下你是如何發現這個錯誤的嗎?這個程序對我來說太令人沮喪了。 – Nikolas