试图用Java将用户输入按字母顺序排序,为什么赢了';这个代码不起作用吗?

试图用Java将用户输入按字母顺序排序,为什么赢了';这个代码不起作用吗?,java,arrays,sorting,Java,Arrays,Sorting,出于某种原因,当我试图向用户询问姓名以便将其添加到列表中并按字母顺序排序时,此代码不会打印任何内容。它甚至无法通过while循环,有人知道问题出在哪里吗?还有一个问题,;如果用户在要求输入值时按下enter按钮,您如何执行某些代码,它会是空的吗?谢谢 import java.util.Scanner; import java.util.*; public class project16u { public static void main(String[] args) {

出于某种原因,当我试图向用户询问姓名以便将其添加到列表中并按字母顺序排序时,此代码不会打印任何内容。它甚至无法通过while循环,有人知道问题出在哪里吗?还有一个问题,;如果用户在要求输入值时按下enter按钮,您如何执行某些代码,它会是空的吗?谢谢

import java.util.Scanner;
import java.util.*;

public class project16u
{
    public static void main(String[] args) 
    {
        int n;
        String input = "nothing";
        String temp;
        ArrayList<String> names = new ArrayList<String>();
        Scanner s1 = new Scanner(System.in);
        System.out.println("Enter all the names:");
        while(!input.equals("done")){
            input = s1.nextLine();
            names.add(input);
        }
        for (int i = 0; i < names.size()-1; i++) 
        {

                if (names.get(i).compareTo(names.get(i+1))>0) 
                {
                    temp = names.get(i);
                    names.add(i, names.get(i+1));
                    names.add(i+1, temp);
                    i=0;
                }
        }
        System.out.print("Names in Sorted Order:");
        for (int i = 0; i < names.size() - 1; i++) 
        {
            System.out.print(names.get(i).toString() + ",");
        }
        System.out.print(names.get(names.size()-1));
    }
}
import java.util.Scanner;
导入java.util.*;
公共类项目16U
{
公共静态void main(字符串[]args)
{
int n;
字符串输入=“无”;
字符串温度;
ArrayList name=新的ArrayList();
扫描仪s1=新的扫描仪(System.in);
System.out.println(“输入所有名称:”);
而(!input.equals(“done”)){
input=s1.nextLine();
名称。添加(输入);
}
对于(int i=0;i0)
{
temp=名称。获取(i);
names.add(i,names.get(i+1));
名称。添加(i+1,临时);
i=0;
}
}
System.out.print(“按排序顺序排列的名称:”);
对于(int i=0;i
add
在请求的索引处插入名称。因此,在您的情况下,列表中有两个相同名称的副本,而不是您想要的副本


您可能想改用
设置

您可能需要将循环条件更改为

s1.hasNextLine()&&!input.equals(“done”)

您需要调试代码。它肯定会停留在
for
循环中,因为您在循环中的某个点重置
i=0
,这通常是一种不好的做法:所有循环都应该对控制变量的每个值迭代一次,并且只迭代一次。他们可能会很快退出,但不是最近。