我的程序遇到问题。我只需要输入大写字母R,B,W。验证正确的输入,然后对字符串进行排序。输出应按R的第一位,B的第二位和W的第三位排序。我只能得到按字母顺序排列的输出,而不能得到所需的输出。我不知道下一步该怎么做。

System.out.print("Enter a string of capital letters made up of R, B, W:  ");
Scanner s = new Scanner(System.in);
String letters;

for (letters = s.nextLine(); !letters.matches("[RBW]+"); letters = s.nextLine())
{
    System.out.println("Invalid entry. Please enter the correct letters.");
}

System.out.println("Thank you");
char[] sort2 = letters.toCharArray();
Arrays.sort(sort2);
String sorted = new String(sort2);

System.out.println("Here are your letters sorted:" +sorted);

最佳答案

你可以做这样的事情。具有三个不同的StringBuilder,并将每个字母相应地添加到其中。然后,当它们循环遍历字母时,以正确的顺序连接它们。

StringBuilder r = new StringBuilder();
StringBuilder w = new StringBuilder();
StringBuilder b = new StringBuilder();

for (char c : letters.toCharArray()){
    switch(c){
        case 'R' : r.append(c); break;
        case 'B' : b.append(c); break;
        case 'W' : w.append(c); break;
    }
}

String sorted = r.toString() + b.toString() + w.toString();
System.out.println("Here are your letters sorted:" + sorted);

08-27 18:30
查看更多