Jam's story
7일차 본문
안좋은 코딩
for(int i=1; i<10; i++) {
for(int j=2; j<6; j++) {
System.out.printf("%d x %d= %d ",j,i,i*j);
}
System.out.println();
}
System.out.println();
for(int i=1; i<10; i++) {
for(int j=6; j<10; j++) {
System.out.printf("%d x %d= %d ",j,i,i*j);
}
System.out.println();
}
}
좋은예
for(int k=1; k<=2; k++) {
for(int i=1; i<10; i++) {
for(int j=4*k-2; j<=4*k-2+3; j++) {
System.out.printf("%d x %d= %d ",j,i,i*j);
}
System.out.println();
}
구구단 3단씩 출력
for(int k=1; k<=3; k++) {
for(int i=1; i<10; i++) {
for(int j=3*k-2; j<3*k-2+3; j++) {
System.out.printf("%d x %d= %d ",j,i,i*j);
}
System.out.println();
}
-좋지않은 코딩
10번일때, break문을 이용해서 빠져가는 것은 좋은 코딩이 아니다. sysout을 넣엇을때 xx가 다 출력된다.
전체를 break해야지 좋은코딩
조건식에 아예 조건을 쓰는게 좋은코딩
break문
가까운 반복문만 빠져나온다
continue
반복문의 끝으로 간다 .
math.random() 을 아용하여 가장큰값 작은값
int[] num=new int[3];
for(int i=0 ;i<3; i++) {
num[i]=(int)(Math.random()*41+10);
System.out.print(num[i]+"\t"); // min값이 안나와서 확인용으로 넣음
}
int max=num[0]>num[1] ?(num[0]>num[2]? num[0]:num[2]):
(num[1]>num[2]? num[1]:num[2]);
int min=num[0]<num[1] ?(num[0]<num[2]? num[0]:num[2]):
(num[1]<num[2]? num[1]:num[2]);
System.out.printf("가장큰 수는 %d\n",max);
System.out.printf("가장작은 수는 %d",min);
}
아스키코드
for(int i=0; i<=255; i++) { System.out.printf("%1$d %1$c",i); }
똑같은 문자를 대입할때는 %1$를 넣으면 하나만 적어도 가능
10줄일때마다 계속하려면 엔터치세요
int lineNumber=5;
for(int i=0; i<=255; i++) {
if(i %10==0)System.out.printf("%d: ",lineNumber++);
System.out.printf(" [%c]",i);
if(i%10==9) {
System.out.println();
if(lineNumber%10==1) {
System.out.println("계속하려면엔터");
}
}
System.in.read()
- int 형
- 한문자만 가져온다
- 엔터칠때까지 기다린다 - 키보드로부터 입력엔터 블러킹(멈춤)
System.in.skip()
System.in.skip(System.in.available());
- 남아있는 문자들을 스킵한다.
int lineNumber=1;
for(int i=0; i<=255; i++) {
if(i %10==0)System.out.printf("%d: ",lineNumber++);
System.out.printf(" [%c]",i);
if(i%10==9) {
System.out.println();
if(lineNumber%10==1) {
System.out.println("계속하려면엔터");
System.in.read(); //엔터칠때까지 멈춰있음
System.in.skip(System.in.available());
}//if
}//if
}//for
Scanner 이용해서 10줄에 한번씩 엔터 입력받기
1-2+3.....-10= -5
젤 좋은 코딩
switcm 문 가위바위보
System.out.println("가위바위보 입력해 ");
int user,com;
Scanner sc=new Scanner(System.in);
user=sc.nextInt();
com=(int)(Math.random()*3)+1;
System.out.println("user은 "+user);
System.out.println("com은 "+com);
switch(user-com) {
case 2: case -1:
System.out.println("user이 이김 ");
break;
case 1: case -2:
System.out.println("com이 이김 ");
break;
case 0:
System.out.println("비김");
break;
package days07;
import java.util.Scanner;
/**
* @author kenik
* @date 2022. 2. 23. - 오후 4:23:28
* @subject p 150 예제 4-7 Ex07_02.java
* @content
*/
public class Ex07_02 {
public static void main(String[] args) {
// 1 2 3
// 배열의 초기화 0 1 2
String [] rockPaperScissors = { "가위", "바위", "보" };
// 5:05 쉬는 시간 -> 20분 -> 5:30 풀이 오늘 수업 종료
Scanner scanner = new Scanner(System.in);
int user, com; // 2 , 1
char con ; // y n
do {
com = (int)(Math.random() * 3)+1; // 랜덤하게 입력..
System.out.println( "com = " + com );
System.out.printf("컴퓨터는 \"%s\"를 냈다.\n", rockPaperScissors[com-1] );
String sUser;
String regex = "[1-3]";
do {
System.out.print("> USER 가위(1)바위(2)보(3) 입력 ? ");
sUser = scanner.next();
} while ( !sUser.matches(regex) );
user = Integer.parseInt(sUser);
// [1]. *** 숫자 1,2,3 유효성 검사를 한 후에 -> user 변수 저장 입력잘못된 경우 다시 사용자 입력
// [2]. com = 1 컴퓨터는 "가위"를 냈다. ---------
// 3. 다시 게임할거니 ? y
switch ( user - com ) {
case 0:
System.out.println("사용자 와 컴퓨터는 비겼다.");
break;
case 1: case -2 :
System.out.println("사용자 이겼다.");
break;
default:
System.out.println("컴퓨터 이겼다.");
break;
} // switch
System.out.print("> 가위바위보 게임 계속 할래 ? ");
con = scanner.next().charAt(0); // 'y' 'n'
} while ( con == 'y' || con == 'Y' );
System.out.println(" 게임 종료!!! ");
} // main
} // class
Comments