2016-02-13 5 views
0

Так что я не хотел использовать таблицу ascii для этого. Я хочу, чтобы пользователь вводил буквенно-цифровой (например, A3), а затем взял алфавит (A) и нашел его в строке ABC, чтобы он дал мне число от 1 до 9 вместо значений ascii. Это упростит мне позже добавить в массив 2d.Как использовать charAt, чтобы найти местоположение символа в строке

Однако, когда я использую System.out.println (abc.charAt (строка)); itll скажет, что это из-за перехвата, потому что оно использует значение 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-int-)? – MadProgrammer

ответ

3

Помните, что символ ASCII для A начинается в 65, так что если пользователь вводит A3, то вы на самом деле с помощью abc.charAt(65), что, очевидно, не то, что вы хотеть.

Вместо этого, вам нужно найти индекс символа в массиве ...

int index = abc.indexOf(row); 

Посмотрите String#indexOf для получения более подробной информации

Вы также можете использовать Character.toUpperCase для преобразования char пользователь вошел в верхний регистр, который сделает его легче искать ваш String

ps- также что-то вроде row - 65 (или row - 'A' если й at s to hard to remember) даст вам тот же результат;)

Смежные вопросы