【发布时间】:2020-02-07 01:50:47
【问题描述】:
我正在编程研讨会课程中研究 Kattis 问题“abc”。该问题要求您输入 0 到 100 之间的三个整数,并让它们与另一组三个字符输入的模式匹配:A
public class ABC {
public static void main(String[] args) {
var scanner = new Scanner(System.in);
int[] num = new int[3];
for (int i=0; i<num.length; i++) {
num[i] = scanner.nextInt();
}
Arrays.sort(num);
char[] chArr = scanner.next().toCharArray();
for (int i=0; i<chArr.length; i++) {
System.out.println(num[chArr[i] - 'A']); //How does num[chArr[i] - 'A'] work?
}
}
}
输入:
1 2 3
C A B
输出:
3 1 2
所以,我的问题是:最后 println 中的表达式是如何工作的?我是在 SO 上发帖的菜鸟,因此我们将不胜感激地接受任何建议。
【问题讨论】:
-
char是一个整数类型。'A' - 'A'为零。'A' + 1是'B'。您需要强制转换才能正常看到它,因为char是 16 位宽,int是 32 位。从int转换为char需要缩小范围。 -
char 分配给 ASCII 表的数值。例如,'Z' 的数值为 90,'0' 的数值为 48。'Z' - '0' 的数值为 42,即 '*'
-
tbh,这似乎是一个很容易找到答案的问题。还有其他人问过这个问题。 stackoverflow.com/questions/21208308/…stackoverflow.com/questions/20720186/…
-
正如我所说,我同意 SO。您似乎很容易忽略这篇文章,不是吗?
标签: java