우당탕탕 개발일지
6일차_과제 본문
1. 성적 처리 프로그램
문제
1. 사지선다형 5문제 제공
2. 정답은 "11111"
>> 정답은 상수화 시킴 & 필드 변수로 사용함.
3. 1문제당 점수는 20점이다.
[실행결과]
인원 수 입력 : 2
이름 입력 : 홍길동
답안지 입력 : 12311
이름 입력 : 코난
답안지 입력 : 11311
***성적표***
이름 1 2 3 4 5 점수
홍길동 O X X O O 60
코난 O O X O O 80
코드
package homework;
import java.util.Scanner;
public class SungJukOX {
static final String JUNG = "11111";
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("인원 수 입력 : ");
int count = sc.nextInt();
String[] name = new String[count];
String[][] ox = new String[count][5];
int[] score = new int[count];
String dap = "";
// [1] 정보 입력
for(int i=0; i<count; i++) {
// 1. 이름 입력
System.out.print("\n이름 입력 : ");
name[i] = sc.next();
// 2. 답안지 입력 & 사지선다 확인
boolean isNotOk = true;
while(isNotOk) {
System.out.print("답안지 입력 : ");
dap = sc.next();
// 2-1. 정답 개수 확인
if(dap.length() == 5) {
for(int j=0; j<JUNG.length(); j++) {
// 2-2. 모든 입력 값이 1~4 가 맞는지 확인
if(Integer.parseInt(dap.charAt(j)+"") >= 5 ) {
// 입력 값이 5이상일 경우 for문 빠져나감
break;
}else if(j == JUNG.length()-1) {
// 5미만 && 마지막 입력 값 확인
isNotOk = false;
}
}
}
}
// 3. 점수 계산
for(int j=0; j<JUNG.length(); j++) {
if(dap.charAt(j) == JUNG.charAt(j)) {
ox[i][j] = "O";
score[i] += 20;
}else {
ox[i][j] = "X";
}
}
}
// [2] 성적 출력
System.out.println("\t***성적표***");
System.out.println("이름\t1 2 3 4 5\t점수 ");
for(int i=0; i<count; i++) {
System.out.print(name[i] + "\t");
for(int j=0; j<JUNG.length(); j++) {
System.out.print(ox[i][j] + " ");
}
System.out.println("\t" + score[i]);
}
}
}
2. 성적 계산
문제
인원수를 입력하여 인원수만큼 데이터를 입력받고 총점과 평균을 구하시오
평균은 소수이하 2째자리까지 출력
[실행결과]
인원수 : 2 (cnt)
이름 입력 : 홍길동 (name)
과목수 입력 : 2 (subjectCnt)
과목명 입력 : 국어 (subject)
과목명 입력 : 영어
국어 점수 입력 : 95 (jumsu)
영어 점수 입력 : 100
---------------------
이름 입력 : 이기자
과목수 입력 : 3
과목명 입력 : 국어
과목명 입력 : 영어
과목명 입력 : 과학
국어 점수 입력 : 95
영어 점수 입력 : 100
과학 점수 입력 : 90
---------------------
이름 국어 영어 총점 평균
홍길동 95 100 xxx xx.xx
이름 국어 영어 과학 총점 평균
이기자 95 100 90 xxx xx.xx
코드
package homework;
import java.util.Scanner;
public class SungJuk {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 1. 인원 수 입력
System.out.print("인원 수 : ");
int cnt = sc.nextInt();
String[] name = new String[cnt]; // 학생 이름
int subjectCnt = 0;
String[][] subject = new String[cnt][]; // 학생 수 만큼 과목 개수 저장
int[][] jumsu = new int[cnt][]; // 각 학생 별, 각 과목별 점수 저장
double[] avg = new double[cnt];
System.out.println("--------------");
// 2. 정보 입력
for(int i=0; i<cnt; i++) {
// 2-1. 기본 정보 입력
System.out.print("이름 입력 : ");
name[i] = sc.next();
System.out.print("과목수 입력 : ");
subjectCnt = sc.nextInt();
subject[i] = new String[subjectCnt];
jumsu[i] = new int[subjectCnt+1]; // 평균값때문
// 2-2. 과목명 입력 및 저장
for(int j=0; j<subjectCnt; j++) {
System.out.print("과목명 입력 : ");
subject[i][j] = sc.next();
}
// 2-3. 과목 별 점수 입력 & 총점
for(int j=0; j<subjectCnt; j++) {
System.out.print(subject[i][j] + "점수 입력 : ");
jumsu[i][j] = sc.nextInt();
jumsu[i][subjectCnt] += jumsu[i][j]; // 총점
}
// 2-4. 평균
avg[i] = (double)jumsu[i][subjectCnt] / subjectCnt;
System.out.println("--------------");
}
// 3. 성적표 과목명 출력
for(int i=0; i<cnt; i++) {
// 3-1. 과목명 출력
String text = "이름\t";
for(String j : subject[i]) {
text += j + "\t";
}
text += "총점\t평균\n";
// 3-2. 학생의 점수 출력
text += name[i] + "\t";
for(int j : jumsu[i]) {
text += j + "\t";
}
text += String.format("%.2f", avg[i]) + "\t\n";
// 3-3. 출력
System.out.println(text);
}
}
}
3. 야구게임
문제
크기가 3개인 정수형 배열을 잡고 1~9사이의 난수를 추출
난수는 중복되지 않음
사용자는 숫자 3자리를 입력
볼 : 사용자가 입력한 숫자가 난수에 존재하기만 하는 개수
스트라이크 : 사용자가 입력한 숫자가 난수에 존재하며 위치도 동일한 개수
[실행결과]
게임을 실행하시겠습니까(Y/N) : w
게임을 실행하시겠습니까(Y/N) : u
게임을 실행하시겠습니까(Y/N) : y
게임을 시작합니다
숫자입력 : 123
0스트라이크 0볼
숫자입력 : 567
0스트라이크 2볼
숫자입력 : 758
1스트라이크 2볼
...
숫자입력 : 785
3스트라이크 0볼
프로그램을 종료합니다.
코드
package array;
import java.util.*;
public class BaseBall {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
boolean startGame = true;
int[] num = new int[3];
// 1. 게임 실행 여부 확인
while(true) {
System.out.print("게임을 실행하시겠습니까(Y/N) : ");
String a = sc.next();
if(a.toUpperCase().equals("Y")) {
System.out.println("게임을 시작합니다.");
break;
}else if(a.toUpperCase().equals("N")){
startGame = false;
break;
}
}
// 2. 난수 3개 추출
if(startGame) {
for(int i=0; i<num.length; i++) {
boolean isNotFind = true; // 못 찾으면 true
while(isNotFind) {
int com = (int)(Math.random() * 9 + 1);
// 중복 방지
for(int j=0; j<=i; j++) {
if(num[j] == com) {
// 중복이면 빠져 나가기
break;
}else if(j == i) {
// 중복 X && 마지막 번호
num[i] = com;
isNotFind = false;
}
}
}
}
}
// 2. 게임 시작
while(startGame) {
// 1. 숫자 입력
System.out.print("숫자 입력 : ");
String user = sc.next();
int[] userArr = new int[user.length()];
for(int i=0; i<user.length(); i++) {
userArr[i] = Integer.parseInt(user.charAt(i) + "");
}
// 2. 결과 확인
int ballCount = 0; // 볼 개수
int strikeCount = 0; // 스트라이크 개수
for(int i=0; i<num.length; i++) {
for(int j=0; j<num.length; j++) {
// 2-1. 볼 확인
if(userArr[i] == num[j]) {
// 2-2. 스트라이크 확인
if(i == j) {
strikeCount++;
}else ballCount++;
break;
}
}
}
System.out.println(strikeCount + "스트라이크 " + ballCount + "볼\n" );
if(strikeCount == num.length) {
break;
}
}
System.out.println("프로그램을 종료합니다.");
}
}