【题目描述】
三个整数分别为 �,�,�A,B,C。这三个数字不会按照这样的顺序给你,但它们始终满足条件:�<�<�A<B<C。为了看起来更加简洁明了,我们希望你可以按照给定的顺序重新排列它们。
【输入格式】
第一行包含三个正整数 �,�,�A,B,C,不一定是按这个顺序。这三个数字都小于或等于 100100。第二行包含三个大写字母 �A、�B 和 �C(它们之间没有空格)表示所需的顺序。
【输出格式】
在一行中输出 �A,�B 和 �C,用一个 (空格)隔开。
感谢 @smartzzh 提供的翻译
输入输出样例
输入 #1复制
1 5 3 ABC
输出 #1复制
1 3 5
输入 #2复制
6 4 2 CAB
输出 #2复制
6 2 4
思路
先将数字转化为数组并排序
再读取字符串转char类型的数组
遍历char类型的数组,如果先读到a那就输出排序后的第一个,以此类推
注意:遍历char类型的数组并输出对应的数字时,可以利用asc码
代码
import java.util.Scanner;
// 按两次 Shift 打开“随处搜索”对话框并输入 `show whitespaces`,
// 然后按 Enter 键。现在,您可以在代码中看到空格字符。
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int[] arr = new int[3];
//读取输入的数字
for (int i = 0; i < 3; i++) {
arr[i] = input.nextInt();
}
String str = input.next();
//排序
int temp = 0;
for (int i = 0; i < 3 - 1; i++) {
for (int j = i + 1; j < 3; j++) {
if (arr[j] < arr[i]){
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;}
}
}
// 将输入的字符串变为数组
char[] chars = str.toCharArray();
//遍历char数组,为A则输出arr的第一个,以此类推
for (int i = 0; i < 3; i++) {
char c=chars[i];
int asc=(int)c;
System.out.print(arr[asc-65]);
if (i<2)
System.out.print(" ");
}
}
}
错误点:13行如图所示写成“String str = input.nextLine();”会报错,原因是13行过后str依然为空
要写成“String str = input.next();”