
오늘 배운 느낌
코드를 통해서 피라미드 별을 만들고, 가위바위보 게임을 만들어 보았다.
반복문과 분기문을 이용하는 것이 어렵긴 했지만,
모양으로 보여지는게 있어서 나름 재미도 있었다.
다만 Math, equal같은 새로운 명령어가 있어서
적응하려면 복습하고 연습해봐야겠다.
// ** 중첩반복문 **
public void ex16() {
// 구구단 모두 출력하기
for(int dan = 2; dan <= 9; dan++) { // 2~9 단까지 차례대로 증가
for(int num = 1; num <= 9; num++) { // 각 단에 곱해질 수 1~9까지 차례대로 증가
System.out.printf("%2d X %2d = %2d", dan, num, dan * num);
}
System.out.println(); // 하나의 단 출력이 끝났을 때 줄바꿈
// 아무내용 없는 println() == 줄바꿈
}
}
public void ex17() {
// 구구단 역순 출력
// 9단 -> 2단까지 역방향
// 곱해지는 수는 1 -> 9 정방향
for(int dan = 9; dan >= 2; dan--) {
for(int num = 1; num <= 9; num++) {
System.out.printf("%2d X %2d = %2d", dan, num, dan * num);
}
System.out.println(); // 하나의 단 출력이 끝났을 때 줄바꿈
}
}
public void ex18 () {
// 2중 for 문을 이용해서 다음 모양을 출력하시오
// 12345
// 12345
// 12345
// 12345
// 12345
for(int i = 1; i <= 5; i++) { // 5바퀴 반복하는 for문
for(int j = 1; j <= 5; j++) { // 12345 한 줄 출력하는 for문
System.out.print(j);
}
System.out.println();
}
System.out.println("--------------------------------------");
}
public void ex19 () {
// 54321
// 54321
// 54321
for(int i = 1; i <= 3; i++) {
for (int j = 5; j >= 1; j--) {
System.out.print(j);
}
System.out.println();
}
}
public void ex20() {
// 2중 for문을 이용하여 다음 모양을 출력하시오.
// 1
// 12
// 123
// 1234
for(int i = 1; i <= 4; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j);
}
System.out.println();
}
}
public void ex21() {
// 4321
// 321
// 21
// 1
for(int i = 4; i >= 1 ; i--) {
for(int j = i; j >= 1; j--) {
System.out.print(j);
}
System.out.println();
}
}
public void ex22() {
// 숫자세기 count
// 1부터 20까지 1씩 증가하면서
// 3의 배수의 총 개수 출력
// 3의 배수의 합계 출력
// 3 6 9 12 15 18 : 6개
// 3의 배수 합계 : 63
int count = 0; // 3의 배수의 개수를 세기 위한 변수
int sum = 0; // 3의 배수의 합계를 구하기 위한 변수
for(int i = 1; i <= 20; i++) {
if (i % 3 == 0) {
System.out.print(i + " ");
count++;
sum += i;
}
}
System.out.println(": " + count + "개");
System.out.println("3의 배수 합계 : " + sum);
}
public void ex23 () {
// 2중 for문과 count를 이용해서 아래모양 출력하기
// 1 2 3 4
// 5 6 7 8
// 9 10 11 12
int count = 1;
for(int i = 1; i <= 3; i++) { // 3줄
for(int j = 1; j <= 4; j++) { // 4칸
System.out.printf("%3d", count);
count++;
}
System.out.println();
}
}
public void ex24 () {
for(int i = 1; i <= 9; i++) {
for(int dan = 2; dan <= 9; dan++) {
System.out.printf("%d X %d = %d ", dan, i, dan * i);
}
System.out.println();
}
}
public class LoopPractice {
Scanner sc = new Scanner(System.in);
public void practice1() {
System.out.print("1 이상의 숫자를 입력하세요: ");
int num = sc.nextInt();
if (num >= 1) {
for (int i = 1; i <= num; i++) {
System.out.print(i + " ");
}
} else {
System.out.print("1 이상의 숫자를 입력해주세요.");
}
}
public void practice2() {
System.out.print("1 이상의 숫자를 입력하세요: ");
int num = sc.nextInt();
if (num >= 1) {
for (int i = num; i <= num; i--) {
System.out.print(i + " ");
if (i == 1) {
return;
}
}
} else {
System.out.print("1 이상의 숫자를 입력해주세요.");
}
}
public void practice3() {
System.out.print("정수를 하나 입력하세요 : ");
int num = sc.nextInt();
int sum = 0;
String equation = "";
for (int i = 1; i <= num; i++) {
sum += i;
if (i < num) {
equation += i + " + ";
} else {
equation += i;
}
}
System.out.println(equation + " = " + sum);
}
public void practice4() {
System.out.print("첫 번째 숫자: ");
int num1 = sc.nextInt();
System.out.print("두 번째 숫자: ");
int num2 = sc.nextInt();
if (num1 < 1 || num2 < 1) {
System.out.print("1 이상의 숫자를 입력해주세요.");
return;
}
if (num1 >= num2) {
for (int i = num2; i <= num1; i++) {
System.out.print(i + " ");
}
}
if (num1 < num2) {
for (int i = num1; i <= num2; i++) {
System.out.print(i + " ");
}
}
}
public void practice5() {
System.out.print("숫자 : ");
int dan = sc.nextInt();
System.out.printf("=====%d단=====\n",dan);
for (int i = 1; i <= 9; i++) {
System.out.printf("%d * %d = %d\n", dan, i, dan * i);
}
}
public void practice6() {
System.out.print("숫자 : ");
int dan = sc.nextInt();
if (dan < 2 || dan >9) {
System.out.print("2~9 사이 숫자만 입력해주세요.");
return;
}
System.out.printf("===== %d단 =====\n", dan);
for(int i = 1; i <= 9; i++) {
System.out.printf("%d X %d = %d\n", dan, i, dan * i);
}
}
public void practice7() {
System.out.print("정수 입력 : ");
int num = sc.nextInt();
for (int i = 1; i <= num; i++) {
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}
}
public void practice8() {
System.out.print("정수 입력 : ");
int num = sc.nextInt();
for (int i = num; i >= 1; i--) {
for (int j = i; j >= 1; j--) {
System.out.print("*");
}
System.out.println();
}
}
public void practice9() {
System.out.print("정수 입력 : ");
int num = sc.nextInt();
for (int i = 1; i <= num; i++) {
for (int j = num; j >= 1; j--) {
if (i >= j) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println();
}
}
public void practice10() {
System.out.print("정수 입력 : ");
int num = sc.nextInt();
for (int i = 1; i <= num; i++) {
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}
for (int i = num - 1; i >= 1; i--) {
for (int j = i; j >= 1; j--) {
System.out.print("*");
}
System.out.println();
}
}
public void practice11() {
System.out.print("정수 입력 : ");
int num = sc.nextInt();
for (int i = 0; i < num; i++) {
for (int j = 1; j < num - i; j++) {
System.out.print(" ");
}
for (int k = 0; k < 2 * i + 1; k++) {
System.out.print("*");
}
System.out.println();
}
}
public void practice12() {
System.out.print("정수 입력 : ");
int num = sc.nextInt();
for (int i = 1; i <= num; i++) {
System.out.print("*");
}
System.out.println();
for (int i = 1; i <= num - 2; i++) {
System.out.print("*");
for (int j = 1; j <= num - 2; j++) {
System.out.print(" ");
}
System.out.println("*");
}
for (int i = 1; i <= num; i++) {
System.out.print("*");
}
}
public void practice13() {
System.out.print("자연수 하나를 입력하세요 : ");
int num = sc.nextInt();
int count = 0;
for (int i = 1; i <= num; i++) {
if (i % 2 == 0 || i % 3 == 0) {
System.out.print( i + " " );
}
if (i % 2 == 0 && i % 3 == 0) {
count++;
}
}
System.out.printf("\ncount : " + count);
}
}
practice11
정수 입력 : 5
*
***
*****
*******
*********
public class WhileExample {
Scanner sc = new Scanner(System.in);
/* while문
* - 별도의 초기식, 증감식이 존재하지 않고
* 반복 종료 조건을 자유롭게 설정하는 반복문.
*
*
* ** 확실히 언제 반복이 끝날지는 모르지만
* 언젠가 반복 조건이 flase가 되는 경우 반복을 종료함.
*
*
* [작성법]
* while( 조건식 ) {
*
* 조건식이 true 일 때 반복 수행할 구문
* }
*
*/
public void ex1() {
int input = 0;
while( input != 9 ) {
// input에 저장된 값이 9가 아닌 경우 반복
System.out.println("----메뉴선택---- \n1. 떡볶이 \n2. 쫄면 \n3. 김밥 \n9. 종료");
System.out.print("메뉴선택 >>");
input = sc.nextInt();
switch(input) {
case 1 : System.out.println("떡볶이를 주문했습니다."); break;
case 2 : System.out.println("쫄면을 주문했습니다."); break;
case 3 : System.out.println("김밥을 주문했습니다."); break;
case 9 : System.out.println("메뉴선택을 종료합니다."); break;
default : System.out.println("잘못 입력하셨습니다.");
}
}
}
public void ex2() {
// 입력되는 모든 정수의 합 구하기
// 단, 0이 입력되면 반복 종료 후 결과 출력
// -> 0이 입력되지 않으면 계속 반복
int input = -1; // 입력받은 값을 저장할 변수
int sum = 0; // 모든 정수의 합을 저장하는 변수
while ( input != 0) {
System.out.print("정수 입력 : ");
input = sc.nextInt();
sum += input; // 입력받은 값을 sum에 누적
}
System.out.println("합계 : " + sum);
}
public void ex3() {
// 입력되는 모든 정수의 합 구하기
// 단, 0이 입력되면 반복 종료 후 결과 출력
// -> 0이 입력되지 않으면 계속 반복
int input = 0; // 입력받은 값을 저장할 변수
int sum = 0; // 모든 정수의 합을 저장하는 변수
// while 문을 최소 한번은 수행하는 반복문
// -> do ~ while 문
do {
System.out.print("정수 입력 : ");
input = sc.nextInt();
sum += input;
} while (input != 0);
System.out.println("합계 : " + sum);
}
}
public class BranchExample {
Scanner sc = new Scanner(System.in);
public void ex1() {
// 1부터 10까지 1씩 증가하며 출력하는 반복문 작성
// 단, 5를 출력하면 반복문 종료
for(int i = 1; i <= 10; i++) {
System.out.print(i + " ");
if ( i == 5 ) {
break;
}
}
}
public void ex2() {
// 0이 입력될 때까지의 모든 정수의 합 구하기
int input = 0;
int sum = 0;
// while문을 처음에 무조건 수행하고, 특정 조건에 종료하는 방법
// 1) input에 초기값을 0이 아닌 다른값 while (input !=0)
// 2) do ~ while 문 사용
// 3) 무한 루프 상태의 while문을 만들고
// 내부에 break 조건 작성
while(true) { // 무한 루프
System.out.print("정수 입력 : ");
input = sc.nextInt(); // 입력
if(input == 0) {
break;
}
sum += input; // 위치 문제마다 잘 생각할 것.
}
System.out.println("합계 : " + sum);
}
public void ex3() {
// 입력받은 모든 문자열을 누적
// 단, "exit@" 입력시 문자열 누적을 종료하고 결과 출력
String str = ""; // 빈 문자열
// 쌍따옴표("")라는 기호를 이용해 String 리터럴임을 지정
// 하지만 내용은 없음.
// String str = null; 과 다르다
while(true) {
System.out.print("문자열 입력(exit@ 입력 시 종료) : ");
String input = sc.nextLine();
// next() : 다음 한 단어 (띄어쓰기 포함 X)
// nextLine() : 다음 한 줄 (띄어쓰기 포함 O)
/* if(input == "exit@") {
* break;
* }
* -> 틀림 (==는 기본 자료형 전용)
*/
if(input.equals("exit@")) {
// String 자료형은 비교 연산자(==)로 같은 문자열인지 판별할 수 없다.
// 비교 연산자는 보통 기본 자료형끼리의 연산에서만 사용 가능하다.
// -> String 은 기본 자료형이 아닌 참조형
// ** 해결방법 : 문자열1.equals(문자열2) 으로 비교 가능 **
break;
}
str += input + "\n";
}
System.out.println("==================================");
System.out.println(str);
}
public void ex4() {
// 중첩 반복문 내부에서 break 사용하기
// 구구단 2~9단
// 단, n단은 *n까지만 출력
for(int dan = 2; dan <= 9; dan++) {
for(int num = 1; num <= 9; num++) {
System.out.printf("%d X %d = %2d ", dan, num, dan * num);
if ( num == dan ) {
break;
}
}
System.out.println();
}
}
// ** continue **
public void ex5() {
// break : 반복문을 바로 멈춤
// continue : 다음 반복으로 넘어감
// 1 ~ 10 까지 1씩 증가하며 출력
// 단, 3의 배수 제외
for (int i = 1; i <= 10; i++) {
if (i % 3 == 0) {
continue;
}
System.out.print(i + " ");
}
}
public void ex6() {
// 1 ~ 100까지 1씩 증가하며 출력하는 반복문
// 단, 5의 배수는 건너뛰고
// 증가하는 값이 40이 되었을 때 반복을 멈춤
// 1
// 2
// 3
// ..
// 39
for(int i = 1; i <= 100; i++) {
if (i % 5 == 0) {
continue;
}
System.out.println(i);
if (i == 39) {
break;
}
}
}
public void RSPGame() {
System.out.println("[가위 바위 보 게임~!!]");
System.out.print("몇 판 ? : ");
int round = sc.nextInt();
// 승패 기록용 변수
int win = 0;
int draw = 0;
int lose = 0;
for (int i = 1; i <= round; i++) { // 입력 받은 판 수 만큼 반복
System.out.println("\n" + i + "번째 게임");
System.out.println("가위/바위/보 중 하나를 입력 해주세요 : ");
String input = sc.next();
// Math.random();
// 난수 생성 -> 0.0 이상 1.0 미만의 난수 생성
// 1) 1~3사이 난수 생성
// 2) 1이면 가위, 2이면 바위, 3이면 보 (switch)
int random = (int)(Math.random() * 3 + 1);
// 0.0 <= x < 1.0
// 0.0 <= x * 3 < 3.0
// 1 <= x * 3 < 4.0
// 1 <= (int)(x*3+1) <4
// == 1 이상 4 미만 정수 --> 1 2 3
String com = null; // 컴퓨터가 선택한 가위/바위/보를 저장하는 변수
// null : 아무것도 참조하고 있지 않음. (com값 초기화 하기위해 사용)
switch(random) {
case 1 : com = "가위"; break;
case 2 : com = "바위"; break;
case 3 : com = "보"; break;
} // 컴퓨터가 잘못 낼 일은 없기 때문에 default 필요없다.
// 컴퓨터는 [바위]를 선택했습니다.
System.out.printf("컴퓨터는 [%s]를 선택했습니다.", com);
// 컴퓨터와 플레이어 가위 바위 보 판별
if( input.equals(com) ) {
System.out.println("비겼습니다.");
draw++;
} else {
boolean win1 = input.equals("가위") && com.equals("보");
boolean win2 = input.equals("바위") && com.equals("가위");
boolean win3 = input.equals("보") && com.equals("바위");
if(win1 || win2 || win3) {
System.out.println("플레이어 승!");
win++;
} else {
System.out.println("졌습니다 ㅜㅜ");
lose++;
}
}
System.out.printf("현재 기록 : %d승 %d무 %d패\n", win, draw, lose);
}
}
}