import java.util.Scanner;
public class Test105
{
public static void main(String[] args)
{
// 스캐너 인스턴스 생성하고 인원수만큼 이름과 점수를 받는다.
// 받은 인원수를 기반으로 이름을 받을 String[], 점수를 받을 int[]을 만든다.
// (인원수만큼)이름과 점수를 사용자에게 입력받는다.
// for문을 이용해서 점수를 비교하고 배열 요소의 순서를 바꾼다. (점수의 경우 ^ 연산자, 이름은 String temp를 만들어 순서변경)
// 결과를 출력한다.
Scanner sc = new Scanner(System.in);
int n;
System.out.print("인원 수 입력 : ");
n=sc.nextInt();
System.out.println("n의 값 : " + n); //테스트
String[] name = new String[n];
int [] score = new int[n];
for (int i=0; i<n; i++)
{
System.out.printf("이름 점수 입력(%d) : ",i+1);
name[i] = sc.next();
score[i] = sc.nextInt();
}
for (int i=0; i<score.length-1; i++) // i → 0 1 2 3
{
for (int j=i+1; j<score.length ; j++) // j → 0 : 1234 1:234 2:34 3:4
{
if (score[i] < score[j])
{
score[i]=score[i]^score[j];
score[j]=score[j]^score[i];
score[i]=score[i]^score[j];
String temp;
temp = name[i];
name[i] = name[j];
name[j] = temp;
}
}
}
System.out.println();
for (int i=0; i<score.length; i++)
{
System.out.printf("%d등 %s %d\n",i+1,name[i],score[i]);
}
// [내가 생각한 방법과 오류들]
// br.readLine()으로 이름 점수 부분을 다 받아서 string[] 만들어서 넣는다.
// 각 배열 요소의 맨 끝자리 두자리(점수부분)를 .substring()을 통해 받는다 (BUT 이렇게 문제를 풀면 나중에 이름이 세 자가 아니거나 점수가 한,세 자리인 특수한 경우가 생길 경우 값이 달라진다.)
//★따라서 이름과 점수의 배열을 따로 만들어서 처리해야 할 듯 하다.
}
}
'📚Study Note > JAVA' 카테고리의 다른 글
[ JAVA ] 클래스 고급 - 상속 (Inheritance) ② (0) | 2021.03.27 |
---|---|
[ JAVA ] 클래스 고급 - 상속 (Inheritance) (0) | 2021.03.27 |
[ JAVA ] 정렬 (Sort) 알고리즘 : "향상된" 버블 정렬 (Bubble Sort) (0) | 2021.03.27 |
[ JAVA ]정렬 (Sort) 알고리즘 : 버블 정렬 (Bubble Sort) (0) | 2021.03.27 |
[ JAVA ] 정렬 (Sort) 알고리즘 : 선택 정렬 (Selection Sort) (0) | 2021.03.27 |