Это функция accept для моей программы tic tac toe, поэтому s
будет хранить данные только в формате String и между 0,0 или 2,2.StringIndexOutOfBoundsException при использовании Character.getNumericValue
Я теперь с помощью функции getNumericValue
для хранения чисел в p
и q
соответственно, но во время выполнения, я получаю StringIndexOutOfBounds
исключение, при попытке сохранить значение в p
.
Проблема происходит только тогда, когда функция выбора(), чтобы решить й или O вызывается перед принимать() еще он работает нормально. В чем проблема с выбором() funtion?
void accept()throws IOException
{
System.out.println("Your move:");
String s=xy.readLine();
int p = (Character.getNumericValue(s.charAt(0)))-1;
int q = Character.getNumericValue(s.charAt(2))-1;
if(ar[p][q]==0)
ar[p][q]=1;
else
{
System.out.println("You can't capture a location that has already been captured!");
accept();
}
}
void choice() throws IOException
{
System.out.println("Welcome to tictactoe");
System.out.print("Enter your weapon X or O : ");
chp = Character.toUpperCase((char)xy.read());
if (chp=='X')
chc='O';
else
chc = 'X';
System.out.println("kkbot chose: "+ chc);
}
Прочитайте [документацию для 'String.charAt'] (https://docs.oracle.com/javase/7/docs/api/java/lang/String.html#charAt (целое)). Вы получаете 'StringIndexOutOfBoundsException', если указанный вами индекс равен> = длина строки. Другими словами, '' 'меньше двух символов, что делает' 2' недопустимым индексом? – qxz
Что такое формат ввода? –
Строка @ShyamBaitmangalkar. Даже после ввода правильного ввода в правильном формате s всегда сохраняет пустую строку по какой-либо причине, а Character.getNumericValue возвращает -1. –