0224 Review


エンコードをすると思ったより簡単に解決できるものに驚きます.
文字列をcharに変換した後、ランダムに並べ替え、問題として出題し、解答の出所に驚いた.これらの例やソースコードに遭遇すると、エラーや無効な符号化を減らすために、より多くの例やソースコードに接触します.

今日のコード
  • デジタル野球続編
    (変数位置をクリーンアップし、user入力値int>Stringに変更して数式を削除)
  • 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;
    			}
    		}
    
    	}
    
    }
  • 以前から気になっていたNextint VS Math.random
    (何度も回りましたが、特定の数字に偏っているものは一つもなく、両方とも見えないので、快適なものを選べばいいです)
  • 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);
    		
    	}
    
    }
    
  • 図時計回りに90度
  • 回転
    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();
    		}
    		
    	}
    
    }