我的程序遇到问题。我只需要输入大写字母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);