所以我不想使用ascii表来执行此操作。我想让用户输入一个字母数字(例如A3),然后取字母表(A)并在字符串ABC中找到它,这样它就会给我一个介于1-9之间的数字而不是ascii值。这将使我以后更容易放入2d数组。
但是当我使用System.out.println(abc.charAt(row))时;它会说它超出了bexception,因为它使用了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));
}
}
答案 0 :(得分:3)
请记住,A
的ascii字符从65开始,因此如果用户输入A3
,那么您实际上正在使用abc.charAt(65)
,这显然不是您想要的。< / p>
相反,您需要找到数组中字符的索引...
int index = abc.indexOf(row);
有关详细信息,请查看String#indexOf
您可能还希望使用Character.toUpperCase
将用户输入的char
转换为大写,这样可以更轻松地搜索您的String
ps-类似于row - 65
(或row - 'A'
,如果难以记住)会给你相同的结果;)