我正在编写一个程序,它接受用户输入的数字来存储为高分表,用户决定表上有多少数字,然后他们输入他们想要出现在表上的数字,尽管出于某种原因我的将数字放在 table 上的代码不会像 id 那样按降序排列数字。我认为这可能是 printHighScores 函数中的 for 循环的问题,尽管我不明白它有什么问题,它应该继续比较数字以查看它们是否全部按降序排列,但我认为我可能在 for 循环中犯了一个错误操作...
我的代码输入数组的大小,然后它接受数字并将它们相应地存储在数组位置中,尽管它不进行计算以按降序存储它们? 如果用户输入数组的大小为 3,并输入 100、150、433,我希望代码对其进行排序以便输出
- 433
- 150
- 100
而是打印出来
- 100
- 150
- 433
为什么 for 循环计算不起作用,有没有更好的方法对数组中的元素进行排序,使它们按降序排列?
这是我的代码,感谢您的帮助:
import java.util.Scanner;
/*
* Write a program to maintain a list of the high scores obtained in a game.
* The program should first ask the user how many scores they want to maintain and then repeatedly accept new scores
* from the user and should add the score to the list of high scores (in the appropriate position) if it is higher than any of the existing high scores.
* You must include the following functions:
-initialiseHighScores () which sets all high scores to zero.
-printHighScores() which prints the high scores in the format:
“The high scores are 345, 300, 234”, for all exisiting high scores in the list (remember that sometimes it won’t be full).
-higherThan() which takes the high scores and a new score and returns whether the passed score is higher than any of those in the high score list.
-insertScore() which takes the current high score list and a new score and updates it by inserting the new score at the appropriate position in the list
*/
public class HighScores {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("How many values would you like to set the High Score list too?:");
int userInput = input.nextInt();
int[] zeroSet = {};
int[] setScores = intialisingHighScores(userInput, zeroSet);
System.out.println("Now Enter the high scores you wish to display:");
int[] highScores = printHighScores(setScores, userInput);
System.out.println("The high scores are:");
for (int i = 0; i <= (userInput-1); i++){
System.out.println((i+1) + ". " + highScores[i]);
}
}
public static int[] intialisingHighScores(int userInput, int[] zeroSet){
zeroSet = new int [userInput];
for (int index = 0; index <= (userInput-1); index++)
{
zeroSet[index] = 0;
}
return zeroSet;
}
public static int[] printHighScores(int[] setScores, int userInput) {
Scanner inputNo = new Scanner(System.in);
int[] setScore = {};
for (int i = 0; i <= (userInput-1); i++)
{
int scores = inputNo.nextInt();
if(scores<0){
System.out.println("No player can be that bad, please enter positive high scores only");
scores = inputNo.nextInt();
setScores[i] = scores;
}
else {
setScores[i] = scores;
}
}
for (int i = 0; i >= (userInput-1); i++){
for (int n = 0; n <= (userInput-1); n++){
if (setScore[i] < setScore[n]){
int saveNo = 0;
for (int p = (userInput-1); p >= 0; p--){
setScore[i] = saveNo;
setScore[p] = setScore[p+1];
}
setScore[userInput-1] = saveNo;
}
}
}
return setScores;
}
public static int[] higherThan(int[] printHighScores, int[] setScores){
return setScores;
}
}
最佳答案
整数的解决方案:
Arrays.sort(array, Collections.reverseOrder());
或者你可以使用Arrays.sort(array);
然后反转它。
for(int i = 0; i < array.length / 2; i++){
int temp = array[i];
array[i] = array[array.length - i - 1];
array[array.length - i - 1] = temp;
}
关于java - 如何将数组中的数字按降序排列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27338057/