728x90
package class_constructor;
import java.util.Scanner;
//객체배열
public class Examination {
private String name;
private String dap;//"12311"
private char[] ox;
private int score;
public static final String JUNG = "11111"; //정답
public String getName() {
return name;
}
public String getDap() {
return dap;
}
public int getScore() {
return score;
}
public char[] getOx() {
return ox;
}
public Examination() {
Scanner sc = new Scanner(System.in);
System.out.print("이름 입력 : ");
this.name = sc.next();
System.out.print("답 입력 : ");
this.dap = sc.next();
ox = new char[5];
//ox = new char[dap.length()];
}
//compare()-비교
public void compare() {
//for(int i=0 ; i<5 ; i++)//
//for(int i=0 ; i<dap.length() ; i++)// 아래꺼랑 같음
for(int i=0 ; i<ox.length ; i++) {
if(dap.charAt(i) == JUNG.charAt(i)) {
ox[i] = 'O';
score +=20;
}else {
ox[i] = 'X';
}
}
}
//여기서 toString안쓰는 이유는 toStrimg은 한번에 출력하는데
//이 클래스는 한줄한줄 for문을 이용해서 출력하기 때문에 맞지않다.ㅇ
}
먼저 필드와 정보를 내보낼 getter를 만든다. ox는 한 글자씩 나갈거니깐 타입을 char로 하는데 5문제에 대한 ox를 나타낼 거니깐 배열로 getter에도 ox는 배열로 해줘야 한다. |
|
기본생성자를 선언 처음 보일 화면이 이름이랑 답을 입력하는거니깐 입력값을 받는거 선언하고 여기서 ox를 배열로 생성한다. 5문제니깐 5개 크기로 |
|
그리고 비교하는 메소드를 만드는데 우리가 답을 입력하는건 String타입, 그리고 상수로 선언한 정답도 String이다. 순서대로 입력한 dap과 JUNG를 비교할려면 그 안에 값들을 하나씩 비교해주면 된다. 그래서 charAt()를 이용해 한개씩 비교하면서 맞으면 O, 틀리면 X를 출력해 OX배열에 입력하고 맞으면 20점식 점수를 늘린다. |
package class_constructor;
import java.io.ObjectInputStream.GetField;
import java.util.Scanner;
public class ExaminationMain {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("인원 수 : ");
int count = sc.nextInt();
System.out.println();
Examination[] en= new Examination[count];
for(int i=0; i<en.length; i++) {
en[i] = new Examination();
en[i].compare();
}
System.out.println();
System.out.println("이름\t1 2 3 4 5 \t점수");
for(int k=0; k<count; k++) {
System.out.print(en[k].getName()+"\t");
for(int i=0;i<en[k].getOx().length; i++) {
System.out.print(en[k].getOx()[i]+" ");
}
System.out.println("\t"+en[k].getScore());
}
}
}
메인 메소드로 넘어와서 입력값을 받는 Scanner 선언해주고 입력한 인원수 만큼 배열을 만들거니깐 count변수를 만들어준다. 그다음 가장 중요한 객체배열을 선언한다. Examination을 속성으로 하는 배열을 담는 en을 count만큼 방을 만들어준다. 그다음 for를 돌려서 en[]방에 하나씩 생성자를 넣어주고 compare를 선언해서 비교를 해준다. 앞서 Examination클래스에 입력에 필요한 필드와 입력코드 등을 다 선언했기 떄문에 생성자만 만들면 된다. |
|
마지막으로 입력한 이름과 답을 비교해서 채점한후 점수와 정답을 출력해야 한다. for를 이용해 count만큼 돌리고 객체배열en[k],getName을 통해 배열에 있는 이름을 불러낸 다음 ox를 통해 채점한 것을 출력한다. |
|
Examination클래스에서 선언한 배열ox와 charAt()을 이용해 ox를 출력하는 compare메소드를 통해 메인메소드에서 객체배열en[k].getOx()를 이용해 정답에 따라 ooxoo,oxxxxo 이런식으로 출력할 수 있다. |
|
다 하면 결과는 이렇다. | |
728x90
'JAVA' 카테고리의 다른 글
(월요일에 복습하기)CalendarMain(캘린더) 만들기, Today (0) | 2020.10.11 |
---|---|
Assert (0) | 2020.10.08 |
DecimalFormat(숫자 형식 클래스) (0) | 2020.10.01 |
가변인자 varArgs (0) | 2020.09.29 |
객체 타입 확인 instanceOf()메소드, indexOf()응용문제 (0) | 2020.09.29 |