문자열을 char로 변환 후 그것을 랜덤으로 재배열해 문제로 출제하고, 그 문제를 맞추는 소스였는데, 이것저것 집어넣어보고 고민하다가 너무도 단순한 방법으로 해결될 수 있다는 사실에 놀랐다. 이런 예제들이나 소스들을 만나면서, 더 많은 예제들과 소스들을 접해서 실수와 비효율적인 코딩을 줄여나가자는 다짐을 하게 된다.
package chap06;
import java.util.Scanner;
public class BaseballGame {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int count = 0;
int a;
int b;
int c;
//겹치지 않는 난수 생성기
while(true) {
a = (int)(Math.random()*9)+1;
b = (int)(Math.random()*9)+1;
c = (int)(Math.random()*9)+1;
if(a!=b && b!=c && c!=a) {
break;
}
}
int userA;
int userB;
int userC;
//user값 입력 + 야구 계산문
System.out.println("세 자리 숫자를 입력하세요.");
while(true) {
String user = scan.next();
//자릿수 에러 처리
if(user.length()<3) {
System.out.println("Error : 세자릿수를 입력하세요.");
continue;
}
userA = user.charAt(0)-'0';
userB = user.charAt(1)-'0';
userC = user.charAt(2)-'0';
//0 or 겹치는 숫자 처리
if(userA==0 || userB==0 || userC==0) {
System.out.println("Error : 0은 입력할 수 없습니다.");
continue;
} else if(userA==userB || userB==userC || userC==userA) {
System.out.println("Error : 겹치지 않는 숫자를 입력하세요.");
continue;
}
//계산 시작과 Strike, Ball, Out 초기화
int strike = 0;
int ball = 0;
int out = 0;
count++;
if(a==userA) {
strike++;
} else if (a==userB || a==userC) {
ball++;
} else {
out++;
}
if(b==userB) {
strike++;
} else if (b==userC || b==userA) {
ball++;
} else {
out++;
}
if(c==userC) {
strike++;
} else if (c==userB || c==userA) {
ball++;
} else {
out++;
}
System.out.printf("숫자 '%s%s%s' - Strike:%s, Ball:%s, Out:%s (시도횟수:%s)\n",userA,userB,userC,strike,ball,out,count);
if(strike==3) {
System.out.println("게임에서 이겼습니다!");
scan.close();
break;
}
}
}
}
package study0224;
import java.util.Random;
public class VarNumEx {
public static void main(String[] args) {
Random num = new Random();
int[] arr1 = new int[100];
int[] arr2 = new int[10];
int max1 = 0;
int max2 = 0;
System.out.println("nextInt 사용시");
for(int maxNum=0; maxNum<10000; maxNum++) {
for(int i=0; i<arr1.length; i++) {
int a = num.nextInt(10);
arr1[i] = a;
}
for(int i=0; i<arr1.length; i++) {
int tmp=arr1[i];
for(int j=0; j<arr2.length; j++) {
if(tmp==j) {
arr2[j]++;
}
}
}
}
for(int i=0; i<arr2.length; i++) {
System.out.printf("%s : %s개\n",i,arr2[i]);
max1 += arr2[i];
}
System.out.println(max1);
System.out.println();
int[] arr1_Math = new int[100];
int[] arr2_Math = new int[10];
System.out.println("Math.random() 사용시");
for(int maxNum=0; maxNum<10000; maxNum++) {
for(int i=0; i<arr1_Math.length; i++) {
int a = (int)(Math.random()*10);
arr1_Math[i] = a;
}
for(int i=0; i<arr1_Math.length; i++) {
int tmp=arr1_Math[i];
for(int j=0; j<arr2_Math.length; j++) {
if(tmp==j) {
arr2_Math[j]++;
}
}
}
}
for(int i=0; i<arr2_Math.length; i++) {
System.out.printf("%s : %s개\n",i,arr2_Math[i]);
max2 += arr2_Math[i];
}
System.out.println(max2);
}
}
package study0224;
public class ArrExFigureSpin {
public static void main(String[] args) {
char[][] star = {
{'*','*',' ',' ',' '},
{'*','*',' ',' ',' '},
{'*','*','*','*','*'},
{'*','*','*','*','*'},
};
char[][] result = new char[star[0].length][star.length];
for(int i=0; i<star.length; i++) {
for(int j=0; j<star[i].length; j++) {
System.out.print(star[i][j]+" ");
}
System.out.println();
}
System.out.println();
for(int i=0; i<star.length; i++) {
for(int j=0; j<star[i].length; j++) {
int x = star.length-1;
result[j][i] = star[x-i][j];
}
}
for(int i=0; i<result.length; i++) {
for(int j=0; j<result[i].length; j++) {
System.out.print(result[i][j]+" ");
}
System.out.println();
}
}
}