请帮助我制定学习计划
我需要修改 addPlayer 函数以按排序顺序将每个数字插入数组中。 程序应输出:-100 -45 4 19 50 55 等 提示:---> 重载的 add() 方法对于维护按排序顺序的列表特别有用< ------
前 4 个步骤我的输出正常,然后不起作用 (((
import java.util.ArrayList;
import java.util.Scanner;
public class Array_sort_by_add {
// Adds playerNum to end of ArrayList
public static void addPlayer (ArrayList<Integer> players, int playerNum) {
int i = 1;
boolean foundHigher = false;
// Look for first item greater than playerNum
foundHigher = false;
i = 1;
while ( (!foundHigher) && (i < players.size()) ) {
if (players.get(i) > playerNum) {
// FIXME: insert playerNum at element i
players.add(i, playerNum); // is it connect?
foundHigher = true;
}
++i;
}
// FIXME: change so executes if higher number NOT found
if (true) { // No higher number found, add at end
players.add(new Integer(playerNum));
// It should be something here - don't know what (((
}
return;
}
// Prints player numbers currently in ArrayList
public static void printPlayers(ArrayList<Integer> players) {
// int i = 1;
for (int i = 1; i < players.size(); ++i) {
System.out.println(" " + i + ". " + players.get(i));
}
return;
}
// Maintains ArrayList of player numbers
public static void main (String [] args) {
ArrayList<Integer> players = new ArrayList<Integer>();
// adding 10 values
addPlayer(players, 55);
addPlayer(players, 4);
addPlayer(players, 33);
addPlayer(players, 30);
addPlayer(players, 40);
addPlayer(players, 80);
addPlayer(players, 70);
addPlayer(players, 19);
addPlayer(players, -45);
addPlayer(players, -100);
printPlayers(players);
return;
}
}
最佳答案
我阅读了您的代码,建议您使用 compareTo()
方法来比较每个整数。
示例
public static void addPlayer (ArrayList<Integer> players, int playerNum) {
int index = 0;
for (int i = 0; i< players.size(); i++) {
if (players.get(i).compareTo(playerNum) >= 0) {
index = i;
break;
} else {
index = i +1;
}
}
players.add(index, playerNum);
}
并且您需要更改此循环的开始索引,否则您将跳过第一项。
示例
// Prints player numbers currently in ArrayList
public static void printPlayers(ArrayList<Integer> players) {
for (int i = 0; i < players.size(); i++) {
System.out.println(" " + (i+1) + ". " + players.get(i));
}
}
System.out
1. -100
2. -45
3. 4
4. 19
5. 30
6. 33
7. 40
8. 55
9. 70
10. 80
Process finished with exit code 0
关于java - 运行程序并观察输出为: 55 4 50 19,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51665092/