입력 받는 부분이 문제
String line;
while (!(line = br.readLine()).equals("0 0 0")) {
// 입력 처리
}
이렇게 받아야 한다.
package baekjoon.class2.B4513;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line;
while(!(line = br.readLine()).equals("0 0 0")){
String[] input = line.split(" ");
// 여기서 arrays.sort 할 배열 하나 만들기
int[] sides = new int[3];
sides[0] = Integer.parseInt(input[0]);
sides[1] = Integer.parseInt(input[1]);
sides[2] = Integer.parseInt(input[2]);
// int lineMax = Math.max(a, (Math.max(b,c)));
// int sum = a + b + c;
/**
* lineMax로 가장 긴 변의 길이를 구할수도 있지만
* 그러면 a,b,c중 뭐가 가장 긴 건지 알 수 없다.
* 따라서 그냥 Arrays.sort로 하는 게 제일 좋다
* */
Arrays.sort(sides);
int a = sides[0];
int b = sides[1];
int c = sides[2];
if (c * c == a * a + b * b) {
System.out.println("right");
} else {
System.out.println("wrong");
}
}
br.close();
}
}
참고로 아래 코드는 무한루프에 빠진다.
String input;
input = br.readLine();
int[] array = new int[3];
while(!(input.equals("0 0 0"))){
for(int i = 0; i < 3; i++) {
array[i] = Integer.parseInt(Arrays.toString((input.split(" "))));
}
}
왜냐면, input을 while문 밖에서 받았기 때문.
또, 이 코드도 잘못됐다. 왜냐면
array[i] = Integer.parseInt(Arrays.toString((input.split(" "))));
input.split(" ")
은 String[]
이고
Arrays.toString()은 “[6, 8, 10]”같은 문자열을 반환한다.
→ NumberFormatException
예외 발생