读取单词直到用户写入 'end',然后,按字典顺序(如在字典中)排序,显示最后一个单词

Read words until user writes 'end', then, order lexicographically(as in a dictionary), show the last word

用户将输入单词,直到最后写的单词是 "end",然后代码必须按字典顺序排序,就像我们在字典中一样,所有在 'end' 之前输入的单词并打印最后一个word,分类在最后一个。

//.......

    Scanner word = new Scanner (System.in);
    String keyword="end";
    String finalstring;

    String[] firststring= new String[1000]; //Don't know how to stablish a //dynamic string[] length, letting the user stablish the string[].length  
    for(int c=0;c<firststring.length;c++){
        firststring[c]=word.next();
        if(firststring[c].equals(keyword)){
            finalstring=firststring[c].substring(0,c);
            c=cadena.length-1; //To jump out of the for.
        }
    }
    for (int c=0;c<finalstring.length();c++) {
        for(int i=c+1;i<finalstring.length();i++) {
            if (firststring[c].compareTo(firststring[i])>0) {
                String change = firststring[c];
                firststring[c] = firststring[i];
                firststring[i] = change;
            }
        }
    }
    System.out.print("\nYou entered "end" and the last word classified is "+finalstring[finalstring.length()-1]); //Of course, error here, just did it to put one System.out.print of how should the result be.
}

}

这是我尝试过的方法,但是没有任何成功,您的任何帮助将是一个很大的帮助,谢谢大家!

Don't know how to stablish a dynamic string[] length, letting the user establish the string[].length

没有必要这样做。但方法是这样的。

方法#1:让用户给你一个数字,然后像这样分配数组:

String[] strings = new String[theNumber];

警告:要求并没有说你可以这样做,如果偏离要求,你可能会被扣分。

方法#2:使用ArrayList 来累积单词列表,使用List.toArray 从列表内容创建数组。 (阅读列表的 javadocs 来解决它。)


Of course, error here, just did it to put one System.out.print of how should the result be.

是的。一个问题是 length 是 1000,但数组中没有 1000 个实际字符串。同样的问题也会影响您之前的代码。想想是...


我不会修复您的代码以使其正常工作。我已经给了你足够的提示让你自己去做。如果你愿意付出努力。

还有一个提示:你可以/应该使用break来跳出第一个循环。

我知道有些单词不是英文而是加泰罗尼亚语,但是代码可以完美理解,昨天我终于编程了这个答案:

public static void main(String[] args) {
    Scanner entrada= new Scanner(System.in);
    System.out.println("Escriu les paraules que vulguis, per acabar, usa la paraula 'fi'.");
    String paraules = "";
    int c=0;
    do {
        String paraula = entrada.next();
        if (paraula.equals("fi")) {
            c++;
        } else {
            if (paraula.compareTo(paraules) > 0) {
                paraules = paraula;
            }
        }
    } while (c==0);
    System.out.println("L'última parala ordenada alfabèticament és "+paraules+".\n");
}

}