public static void main(String[] args) {
String pattern = "abcde";
System.out.println(Pyramid.watchPyramidFromTheSide(pattern));
}
public static String watchPyramidFromTheSide(String characters) {
for (int i = 0; i < characters.length(); i++) {
for (int j = 0; j < (characters.length() - 1) - i; j++) {
System.out.print(" ");
}
for (int j = 0; j < (i * 2) + 1; j++) {
System.out.print(characters.charAt(characters.length()-i));
//문자열에서 특정 위치 문자 가져오기 charAt
}
System.out.println();
}
return "";
}
< 발생 예외 >
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
< 이유 >
System.out.print(characters.charAt(characters.length( ) - i )) 에서 문자열 인덱스가 범위를 벗어나서 발생
문자열 길이가 5인데, 인덱스 5에 접근하려고 하여 발생 java에서 인덱스는 0부터 시작하기 때문에 길이가 5인 문자열의 유효한 인덱스 범위는 0~4까지 임으로 -1을 해줌으로 해결가능
System.out.print(characters.charAt(characters.length( ) - 1 - i ))
< 수정 >
public static String watchPyramidFromTheSide(String characters) {
for (int i = 0; i < characters.length(); i++) {
for (int j = 0; j < (characters.length() - 1) - i; j++) {
System.out.print(" ");
}
for (int j = 0; j < (i * 2) + 1; j++) {
System.out.print(characters.charAt(characters.length()-1-i));
//문자열에서 특정 위치 문자 가져오기 charAt
}
System.out.println();
}
return "";
}
'에러 모음' 카테고리의 다른 글
AssertionFailedError (0) | 2024.04.08 |
---|---|
MissingServletRequestParameterException (0) | 2024.04.08 |
does not override abstract (0) | 2024.04.05 |
ClassCastException (0) | 2024.04.02 |
method does not override (0) | 2024.04.01 |