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

时间:2015-02-28 03:36:07

标签: java string lexicographic

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

// .....

    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.
}

}

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

2 个答案:

答案 0 :(得分:0)

  

不知道如何建立动态字符串[]长度,让用户建立字符串[]。长度

没有必要这样做。但是,这是怎么做的。

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

String[] strings = new String[theNumber];

警告:要求不允许您这样做,并且您可能会因偏离要求而失去分数。

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


  

当然,这里出错了,只是把它放在一个System.out.print中,结果如何。

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


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

还有一个提示:您可以/应该使用break来突破第一个循环。

答案 1 :(得分:0)

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

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");
}

}