문제 및 해결
1. 초기 코드
import java.util.*;
public class Main {
public static void main(String[] args) {
String[] data = new String[12];
Scanner sc = new Scanner(System.in);
int i = 0;
for(i=0;i<data.length;i++) {
System.out.print("입력하세요 : ");
data[i] = sc.nextLine();
}
int chk = Integer.parseInt(data[1]);
System.out.println("[" + data[0] + "]");
System.out.println(chk + "(" + Double.parseDouble(data[1]) * (100 / 5.0) + "%)");
for(i=2;i<data.length;i++) {
System.out.println(data[i]);
}
}
}
2. 문제 설명
- 위의 코드에서
data
배열에 저장된 값이 정수형으로 변환되지 않아 문제가 발생했습니다. 특히, data[1]
을 정수형으로 변환하여 chk
에 저장하고자 했으나, 해당 값이 Double
로 처리되면서 의도한 결과를 얻지 못했습니다.
3. 수정된 소스코드
import java.util.*;
public class Main {
public static void main(String[] args) {
String[] data = new String[12];
Scanner sc = new Scanner(System.in);
int i = 0;
for(i=0;i<data.length;i++) {
System.out.print("입력하세요 : ");
data[i] = sc.nextLine();
}
float chk = Float.parseFloat(data[1]);
System.out.println("[" + data[0] + "]");
System.out.println("별점 : " + (int)chk + "(" + (int)(chk * (100 / 5.0)) + "%)");
for(i=2;i<data.length;i++) {
System.out.println(data[i]);
}
}
}
4. 수정 내용
data[1]
의 값을 Float
로 변환하여 chk
변수에 저장하였습니다.
- 출력 부분에서
chk
를 정수형으로 변환하여 별점과 백분율을 올바르게 계산하고 표시하도록 수정했습니다.
(int)(chk * (100 / 5.0))
계산식에서 chk
의 백분율을 올바르게 출력하도록 했습니다.
5. 결과
- 수정된 코드에서는
data[1]
의 값을 실수형으로 변환하여 백분율을 올바르게 계산하고, 별점과 함께 출력하는 기능이 정상적으로 작동합니다.