所以我不想使用 ascii 表来做到这一点。我想让用户输入一个字母数字(例如 A3),然后获取字母表(A)并在字符串 ABC 中找到它,这样它就会给我一个 1-9 之间的数字,而不是 ascii 值。这将使我以后更容易放入二维数组。
但是当我使用 System.out.println(abc.charAt(row)); 时它会说它超出范围,因为它使用 ascii 值。我怎样才能让它不发生
public static void main(String[]args){
Scanner k = new Scanner(System.in);
String abc = "ABCDEFGHIJ";
String ab = "abcdefghij";
abc.equals(ab);
System.out.println("Please enter the attack location:");
while (!k.hasNext("[A-J a-j]+[0-9]")) {
System.out.println("Wrong");
k.next();
}
String location = k.next();
char row = location.charAt(0);
int num = (int) location.charAt(1);
System.out.println(abc.charAt(row));
}
}
最佳答案
请记住,A
的 ascii 字符从 65 开始,因此如果用户输入 A3
,那么您实际上使用的是 abc.charAt(65)
,这显然不是你想要的。
相反,您需要找到该字符在数组中的索引...
int index = abc.indexOf(row);
看看String#indexOf
了解更多详情
您可能还想使用 Character.toUpperCase
将用户输入的 char
转换为大写,这样可以更轻松地搜索您的String
ps- 类似 row - 65
(或 row - 'A'
如果很难记住的话)也会给你相同的结果;)
关于java - 如何使用 charAt 查找字符串中字符的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35376135/