Java 什么';是什么导致了我的无限循环?

Java 什么';是什么导致了我的无限循环?,java,arraylist,infinite-loop,Java,Arraylist,Infinite Loop,我正在写一个程序来跟踪循环赛的结果。现在,我有一个无限循环,我想几天前我已经修复了,但显然没有。我一直在跟踪setRanks方法,我认为这就是为什么它是无限循环。我只需要一个人帮我弄清楚为什么不能正确订购 import java.util.ArrayList; import java.util.Scanner; public class RoundRobin { public static void main(String[] args) { Scanner input = new S

我正在写一个程序来跟踪循环赛的结果。现在,我有一个无限循环,我想几天前我已经修复了,但显然没有。我一直在跟踪setRanks方法,我认为这就是为什么它是无限循环。我只需要一个人帮我弄清楚为什么不能正确订购

import java.util.ArrayList;
import java.util.Scanner;
public class RoundRobin 
{
public static void main(String[] args)
{
    Scanner input = new Scanner(System.in);
    System.out.println("How many players?");
    int num = Integer.parseInt(input.nextLine());
    ArrayList<Player> entries = start(num);
    roundScore(entries);
    setRanks(entries);
    System.out.println(entries);
}
public static ArrayList<Player> start(int num)
{
    ArrayList<Player> entries = new ArrayList<Player>(num);
    Player blank = new Player("");
    for(int i = 0; i<num; i++)
    {
        entries.add(blank.copy());
    }
    for(int i = 0; i<entries.size(); i++)
    {
        Scanner input = new Scanner(System.in);
        System.out.println("Enter Player "+(i+1)+"'s name");
        entries.get(i).editName(input.nextLine());
    }
    return entries;
}
public static ArrayList<Player> roundScore(ArrayList<Player> arr)
{
    String[] strScore = new String[3];
    int[] score = new int[3];
    for(Player temp: arr)
    {
        Scanner input = new Scanner(System.in);
        System.out.println("What is "+temp.getName()+"'s score?");
        strScore = input.nextLine().split("-");
        for(int i = 0; i<strScore.length; i++)
            score[i] = Integer.parseInt(strScore[i]);
        temp.setScores(score);
    }
    return arr;
}
public static ArrayList<Player> setRanks(ArrayList<Player> arr)
{
    if(arr.size()<2)
        return arr;
    int index = 0;
    int start = 1;
    Player tempPlayer = new Player("");
    int min;
    while(!order(arr))
    {
        System.out.println(order(arr));
        min = arr.get(start).getScore();
        for(int i = 0; i<arr.size(); i++)
        {
            if(min<arr.get(i).getScore())
            {
                min=arr.get(i).getScore();
                index = i;
            }
            tempPlayer = arr.get(index);
            arr.set(index, arr.get(start-1));
            arr.set(start-1, tempPlayer);
        }
        for(Player temp: arr)
            temp.setRank(arr.indexOf(temp)+1);
    }
    return arr;
}//method end
private static boolean order(ArrayList<Player> arr)
{
    for(int i = 0; i<arr.size(); i++)
    {
        for(int j = i+1; j<arr.size(); j++)
        {   
            if(arr.get(j).getScore()>arr.get(i).getScore())
                return false;
        }
    }
    return true;
}//method end
}//class end
import java.util.ArrayList;
导入java.util.Scanner;
公共类循环赛
{
公共静态void main(字符串[]args)
{
扫描仪输入=新扫描仪(System.in);
System.out.println(“有多少玩家?”);
int num=Integer.parseInt(input.nextLine());
ArrayList条目=开始(num);
总分(条目);
设置等级(条目);
系统输出打印项次(条目);
}
公共静态ArrayList开始(int num)
{
ArrayList条目=新的ArrayList(num);
玩家空白=新玩家(“”);

对于(int i=0;i将setRanks方法更改为:

public static ArrayList<Player> setRanks(ArrayList<Player> arr) {
    if (arr.size() < 2)
        return arr;
    int index = 0;
    int start = 1;
    Player tempPlayer = new Player("");
    int min;
    Collections.sort(arr);
    return arr;
}
publicstaticarraylistsetranks(arraylistarr){
如果(阵列大小()<2)
返回arr;
int指数=0;
int start=1;
玩家tempPlayer=新玩家(“”);
int-min;
集合。排序(arr);
返回arr;
}
并在播放器类中实现可比较的接口:

public class Player implements Comparable<Player> {
...

    @Override
    public int compareTo(Player o) {
        return getScore() - o.getScore();
    }
}
公共类播放器实现可比较的{
...
@凌驾
公共整数比较(玩家o){
返回getScore()-o.getScore();
}
}

System.out.println
是你的朋友。你为什么不使用可用的内置排序方法?不需要自己编写。Java还有调试器功能,你知道吗?:-)有没有办法从最大到最小排序?快速解决方案:用o.getScore()替换getScore()
返回o.getScore()-getScore();
public class Player implements Comparable<Player> {
...

    @Override
    public int compareTo(Player o) {
        return getScore() - o.getScore();
    }
}