본문 바로가기

JAVA/JAVA

자바 예제 - 정렬 : 성적순으로 출력하는 프로그램 작성해보기

반응형

<정렬 기본예제>


class  SortTest{

public static void main(String[] args) {

int a[] = {76, 16, 7, 24, 20, 33};

// 정렬 : 값을 순서대로 놓는것을 말함,

// 오름차순, 내림차순




for (int i =0; i < 6 ; i++ ){

for(int j =i+1; j<6; j++){

if (a[j] < a[i]){

int temp = a[i];

a[i] = a[j] ;

a[j] = temp;

}

}

}


for (int i=0; i <6 ;i++ ){

System.out.print(a[i] + " ");

}

}

}




<성적순으로 출력하는 예제>



<순서>

1. 기본구조 : 성적순으로 출력되도록 하기

2. 이름과 성적이 같이 정렬되게 하기

3. 사용자 정의 사용 전

4. 사용자 정의 사용 후 (일단 한사람만 입력)

5. 사용자 정의 사용 후 (생성자 이용한 것)

6. 사용자 정의 사용 후 (생성자 이용, 여러명 입력)



<코드1>

기본구조 : 성적순으로 출력되도록 하기


class SortTest02 {

public static void main(String[] args) {

String name[] = {"사용자1","사용자2","사용자3","사용자4","사용자5"};

int score[] = {80,90,100,70,60};


//모든 학생의 정보를 출력

System.out.println("이름\t점수");

for (int i =0; i <5 ;i++ ){

System.out.println(name[i] + "\t" + score[i]);

}

}

}



<코드2>

: 이름과 성적이 같이 정렬되게 함


class SortTest2 {

public static void main(String[] args) {

String name[] = {"사용자1","사용자2","사용자3","사용자4","사용자5"};

int score[] = {80,90,100,70,60};

/*

//모든 학생의 정보를 출력

System.out.println("이름\t점수");

for (int i =0; i <5 ;i++ ){

System.out.println(name[i] + "\t" + score[i]);

}

*/

for (int i =0; i <5 ; i++ ){  // 최종값에 i < 5 이것은 i < 4를 주어야 한다 j 에 i+1이기때문에 5를 초과하므로...

for (int j = i+1; j <5 ; j++ ){

if (score[j] > score[i]){


int temp = score[i];

score[i] = score[j];

score[j] = temp;


String str = name[i];

name[i] = name[j];

name[j] = str;

}

}

}

for (int i =0; i < 5 ; i++ ){

System.out.println(name[i]+ " " + score[i] + " ");

}


}

}



<코드3>
: 사용자 정의 배우기 전 예제

class  SortTest3{
public static void main(String[] args){

String name[] = {"사용자1","사용자2","사용자3","사용자4","사용자5"};
int kor[] = {50,60,70,80,100};
int eng[] = {60,70,80,90,100};
int math[] = {100,80,90,100,80};
int tot[] = new int[5];
int avg[] = new int[5];

// 총점, 평균을 각각 계산하여 성적순으로 정렬하여 출력

for (int i = 0 ; i < 5 ; i++ ){
tot[i] = kor[i] + eng[i] + math[i];
avg[i] = tot[i] / 3;
}

// 성적이 높은 순으로 정렬
for (int i=0; i < 4 ; i++ ){
for (int j =i+1; j <5 ; j++ ){
if (avg[j] > avg[i]){
//이름, 국어, 영어, 수학, 총점, 평균 다 바꿔야함
String str = name[i];
name[i] = name[j];
name[j] = str;

int temp = kor[i];
kor[i] = kor[j];
kor[j] = temp;

temp = eng[i];
eng[i] = eng[j];
eng[j] = temp;

temp = math[i];
math[i] = math[j];
math[j] = temp;

temp = tot[i];
tot[i] = tot[j];
tot[j] = temp;

temp = avg[i];
avg[i] = avg[j];
avg[j] = temp;
}
}
}

System.out.println("이름\t국어\t영어\t수학\t총점\t평균");

for (int i = 0; i < 5 ; i++ ){
System.out.println(name[i]+"\t"+kor[i]+"\t"+eng[i]+"\t"+math[i]+"\t"+tot[i]+"\t"+avg[i]);
}
}
}


<코드4 설명>
한사람의 정보( 이름, 국어, 영어, 수학, 총점, 평균)을 하나의 세트로 만들어 두면 프로그램하기가 훨씬 수월해 진다.
==> 여러가지 정보를 하나의 세트로 만드는 사상을 '새로운 자료형' 이라고 한다

기본자료형 : boolean, char, byte, short, int, long, float, double

기본 자료형 만으로는 프로그램 하기가 복잡해져서
사용자가 새로운 자료형을 만들 수 있다.
==> class


<코드4>
: 사용자 정의 사용 후 (일단 한사람만 입력)

class Student{
String name;
int kor;
int eng;
int math;
int tot;
int avg;
}

class  SortTest4{
public static void main(String[] args){

Student s;
s = new Student(); // 클래스는 객체를 생성하고 객체를 통해서 사용할 수 있다.

s.name = "사용자1";
s.kor = 100;
s.eng = 80;
s.math = 70;
s. tot = s.kor+s.eng+s.math;
s. avg = s.tot / 3;

System.out.println(s.name + " " + s.tot + " " + s.avg);

/*
Student s[] = new Student[5];

// 총점, 평균을 각각 계산하여 성적순으로 정렬하여 출력

for (int i = 0 ; i < 5 ; i++ ){
tot[i] = kor[i] + eng[i] + math[i];
avg[i] = tot[i] / 3;
}

// 성적이 높은 순으로 정렬
for (int i=0; i < 4 ; i++ ){
for (int j =i+1; j <5 ; j++ ){
if (avg[j] > avg[i]){
//이름, 국어, 영어, 수학, 총점, 평균 다 바꿔야함
String str = name[i];
name[i] = name[j];
name[j] = str;

int temp = kor[i];
kor[i] = kor[j];
kor[j] = temp;

temp = eng[i];
eng[i] = eng[j];
eng[j] = temp;

temp = math[i];
math[i] = math[j];
math[j] = temp;

temp = tot[i];
tot[i] = tot[j];
tot[j] = temp;

temp = avg[i];
avg[i] = avg[j];
avg[j] = temp;
}
}
}

System.out.println("이름\t국어\t영어\t수학\t총점\t평균");
for (int i = 0; i < 5 ; i++ ){
System.out.println(name[i]+"\t"+kor[i]+"\t"+eng[i]+"\t"+math[i]+"\t"+tot[i]+"\t"+avg[i]);
}
*/
}
}


<코드5 설명> (코드4와 동일)
한사람의 정보( 이름, 국어, 영어, 수학, 총점, 평균)을 하나의 세트로 만들어 두면 프로그램하기가 훨씬 수월해 진다.
==> 여러가지 정보를 하나의 세트로 만드는 사상을 '새로운 자료형' 이라고 한다

기본자료형 : boolean, char, byte, short, int, long, float, double

기본 자료형 만으로는 프로그램 하기가 복잡해져서
사용자가 새로운 자료형을 만들 수 있다.
==> class

<코드5>

class Student{
String name;
int kor;
int eng;
int math;
int tot;
int avg;

//생성자(대소문자구별, 클래스와 똑같아야함)
//소괄호 안에는 받아올 변수이름을 지정한다
Student(String n, int k, int e, int m){
name = n;
kor = k;
eng = e;
math = m;
tot = kor + eng + math;
avg = tot / 3;
}
}

class  SortTest5{
public static void main(String[] args){

Student s;
s = new Student("사용자1", 100, 80, 70); // 클래스는 객체를 생성하고 객체를 통해서 사용할 수 있다.

System.out.println(s.name + " " + s.tot + " " + s.avg);



/*
Student s[] = new Student[5];

// 총점, 평균을 각각 계산하여 성적순으로 정렬하여 출력

for (int i = 0 ; i < 5 ; i++ ){
tot[i] = kor[i] + eng[i] + math[i];
avg[i] = tot[i] / 3;
}

// 성적이 높은 순으로 정렬
for (int i=0; i < 4 ; i++ ){
for (int j =i+1; j <5 ; j++ ){
if (avg[j] > avg[i]){
//이름, 국어, 영어, 수학, 총점, 평균 다 바꿔야함
String str = name[i];
name[i] = name[j];
name[j] = str;

int temp = kor[i];
kor[i] = kor[j];
kor[j] = temp;

temp = eng[i];
eng[i] = eng[j];
eng[j] = temp;

temp = math[i];
math[i] = math[j];
math[j] = temp;

temp = tot[i];
tot[i] = tot[j];
tot[j] = temp;

temp = avg[i];
avg[i] = avg[j];
avg[j] = temp;
}

}
}

System.out.println("이름\t국어\t영어\t수학\t총점\t평균");
for (int i = 0; i < 5 ; i++ ){
System.out.println(name[i]+"\t"+kor[i]+"\t"+eng[i]+"\t"+math[i]+"\t"+tot[i]+"\t"+avg[i]);
}
*/
}
}


<코드6 설명> (코드4, 5와 동일)
한사람의 정보( 이름, 국어, 영어, 수학, 총점, 평균)을 하나의 세트로 만들어 두면 프로그램하기가 훨씬 수월해 진다.
==> 여러가지 정보를 하나의 세트로 만드는 사상을 '새로운 자료형' 이라고 한다

기본자료형 : boolean, char, byte, short, int, long, float, double

기본 자료형 만으로는 프로그램 하기가 복잡해져서
사용자가 새로운 자료형을 만들 수 있다.
==> class


<코드6>
: 사용자 정의 사용 후 (생성자 이용, 여러명 입력)

class Student{
String name;
int kor;
int eng;
int math;
int tot;
int avg;

//생성자(대소문자구별, 클래스와 똑같아야함)
//소괄호 안에는 받아올 변수이름을 지정한다
Student(String n, int k, int e, int m){
name = n;
kor = k;
eng = e;
math = m;
tot = kor + eng + math;
avg = tot / 3;
}
}

class  SortTest5{
public static void main(String[] args){

Student st[] = new Student[5];
st[0] = new Student("사용자1", 80 ,90 ,100);
st[1] = new Student("사용자2", 90 ,80 ,100);
st[2] = new Student("사용자3", 60 ,70 ,80);
st[3] = new Student("사용자4", 70 ,70 ,80);
st[4] = new Student("사용자5", 100 ,100 ,90);

// 성적이 높은 순으로 정렬
for (int i=0; i < 4 ; i++ ){
for (int j =i+1; j <5 ; j++ ){
if (st[j].avg > st[i].avg){
//이름, 국어, 영어, 수학, 총점, 평균 다 바꿔야함
Student temp = st[i];
st[i] = st[j];
st[j] = temp;
}
}
}

System.out.println("이름\t국어\t영어\t수학\t총점\t평균");
for (int i = 0; i < 5 ; i++ ){
System.out.println(st[i].name+"\t"+st[i].kor+"\t"+st[i].eng+"\t"+st[i].math+"\t"+st[i].tot+"\t"+st[i].avg);
}
}
}




반응형