2016-02-13 91 views
0

所以我不想使用ascii表来做到这一点。我想让用户输入一个字母数字(例如A3),然后取出字母(A)并在字符串ABC中找到它,这样它会给我一个介于1-9之间的数字,而不是具有ascii值。这会让我更容易在稍后放入二维数组。如何使用charAt查找字符串中字符的位置

但是,当我使用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)); 
} 
} 
+2

['String#indexOf'](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html #的indexOf-内部 - )? – MadProgrammer

回答

3

记住,为A开始的ASCII字符在65,所以如果用户输入A3,那么你实际使用abc.charAt(65),这显然不是你想。

相反,你需要找到数组中的字符的索引...

​​

看一看String#indexOf更多细节

您可能还需要使用Character.toUpperCase转换的char用户输入为大写,这将使它更容易搜索你String

PS-也像row - 65(或row - 'A'如果日难以记住)会给你相同的结果;)

相关问题