이것은 내 tic tac toe 프로그램의 accept 함수이므로 s
은 데이터를 String 형식과 0,0 또는 2,2 사이에만 저장합니다. p
에 값을 저장하려고 할 때Character.getNumericValue를 사용하는 경우 StringIndexOutOfBoundsException
, 지금은 각각 p
및 q
의 숫자를 저장하기 위해 getNumericValue
기능을 사용하고 있지만, 런타임 중에, 나는 StringIndexOutOfBounds
예외를 얻을. 선택() 함수는 다른 사람이 벌금을 실행중인) × 결정 또는 O 이 전 (동의를 호출 할 때
문제
에만 일어나고있다. choice() 함수의 문제점은 무엇입니까?
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 (INT)). 전달하는 인덱스가> => String 인 경우 'StringIndexOutOfBoundsException'을 얻습니다. 즉's'가 2 자보다 적어서'2'가 유효하지 않은 색인이됩니까? – qxz
입력 형식이 무엇입니까? –
@ShyamBaitmangalkar String 올바른 형식으로 올바른 입력을 한 후에도 s는 항상 어떤 이유로 빈 문자열을 저장하고 Character.getNumericValue는 -1을 반환합니다. –