SQLD, ECLIPS, JAVA,PYTHON, NODE....

[Eclips] Java class 2 - do while, switch, for 등 제어문 연습문제(다이아몬드 출력 등) 본문

Java

[Eclips] Java class 2 - do while, switch, for 등 제어문 연습문제(다이아몬드 출력 등)

D_Aiden 2023. 12. 8. 19:11
728x90
반응형
SMALL
Scanner scan = new Scanner(System.in);      // 키보드 선언
System.out.print("단을 입력하세요: ");       // 키보드에 입력할 질문
int dan=scan.nextInt();                    // scan을 dan이라는 변수선언

1. 10,9,8,7,6,5,4,3,2,1 순으로 정수를 출력하는 프로그램을 작성하시오.
(정답)

for(int a=10; a>0; a--) { 
		System.out.print(a +","); 
}

// 이렇게도 코딩 가능함
for(int d=10; d>10; d--) {
	if(d !=1) {
    	System.out.print(d + ",");
        } else {
        System.out.print(d);
    	}
}



2. 다음의 프로그램을 실행하면 어떤 결과가 출력될까요? 

class FruitVendingMachine {
      public static void main String args[]) {
	
    char coin = ‘K’;
	switch (coin) {
		case ‘A’ : System.out.println(“사과”);
			break;
		case ‘P’ : System.out.println(“배”);
			break;
		case ‘G’ : System.out.println(“포도”);
			break;
		default : System.out.println(coin);
			break;
		}
	}
}


(정답) K 출력됨.
또 키위('K')가 출력되도록 수정하시오.
(정답)

	char coin = 'K';                         // 'A'를 'K'로 변경
	switch (coin) {
		case 'A' : System.out.println("사과");
        	break;
		case 'P' : System.out.println("배");
        	break;
		case 'G' : System.out.println("포도");
        	break;
		case 'K' : System.out.println("키위"); 
//        	break;             				// break 주석(삭제)처리
		default :  System.out.println(coin); 
        	break;
	}

       
(응용문제)
2.1. 모든 과일이 선택되어 나오도록 수정하시오.
(정답)

	char coin = 'A';                            // K를 A로 변경
	switch (coin) {
		case 'A' : System.out.println("사과");        // break 주석처리
		case 'P' : System.out.println("배");          // break 주석처리
		case 'G' : System.out.println("포도");        // break 주석처리
			break;
		default : System.out.println(coin);
		}
	}
}


2.2. 대/소문자 상관없이 p(P)를 입력하면 '배'가 선택되도록 클래스를 작성하시오.
(정답)

import java.util.Scanner;

public class FruitVendingMachine {
	public static void main(String[] args) {
	
	String dd;
	Scanner scan = new Scanner(System.in);
	System.out.print("과일을 선택하세요: ");
	dd=scan.nextLine(); 

	switch (dd.charAt(0)) {
		case 'P' : System.out.println("배"); 
        	break; 
		case 'p' : System.out.println("배"); 
        	break;
		default : System.out.println("배가 아니에요.");
        	break;
		}
	}
}


2.3. 다음의 machine 메서드를 구현해 보시오.
class FruitVendingMachine{
public static void main(String args[]){
char coin = 'K';
String str;
str=machine(coin); // 메소드 호출
System.out.println("자판기 선택 과일 : " + str);
}
static String machine.... // 메소드 선언*** 구현하기
.....
}
(정답)

class FruitVendingMachine {
	public static void main(String[] args) {
		char coin = 'K':
		String str;
        str = machin(coin); 
			System.out.println("자판기 선택 과일: " +str); }
		public static String machine ( char coin){        // 메소드 선언
		String message = "";
		switch (coin =='A') {
			case 'A' : System.out.println("Apple"); 
            		break;
			case 'B' : System.out.println("Banana"); 
            		break;
			case 'K' : System.out.println("Kiwii"); 
            		break;
			default : System.out.println("check to input ID"); 
            		break;
   	}
}



3. switch문과 if문의 상호 변환관계에 대해 설명하시오.(간단한 예로 코딩하기)
(정답) swicth는 조건만족때 break로 하위조건을 무시하고 빠져나갈 수 있고, continue 사용해 다음연산을 진행하고 case가 많은 경우는 swicth을 사용해야 된다. 
if문은 아래 코딩처럼 else 로 예외확인 후 if문으로 다른 경우 연산하는 형태라 여러개의 변수가 생기면 코딩이 길어지고 연산횟수도 많아져 컴퓨터 성능에 좋지 않음.

// switch문
	public cass switchifcalss {
		public static void main(String[] args) {
    	
        int fruits = 'A';
    	switch( fruits) {
        	case 'A': System.out.println("선택한 과일은 사과입니다.");
            	continue;
            case 'B': System.out.println("선택한 과일은 바나나입니다.");
            	break;
            default : System.out.println("과일선택을 안하셨네요.");
            	break;
            }
     }
}

// if문
	int fruits = 'A';
    if (fruits == 'A') {
    		System.out.println("사과를 선택하셨네요.");
	} else if (fruits == 'B') {
    		System.out.println("귤을 선택하셨네요.");
    } else {
    	       System.out.println("과일선택을 해주세요.");
      }
    }
}



4. 다음의 프로그램은 잘못된 프로그램입니다. 어떤 부분이 잘못되었는지 찾고, 잘못된 이유를 설명하십시오.
class Total {
public static void main String args[]) {
int total = 0;
for (byte cnt=0; cnt<200; cnt++)
total += cnt;
System.out.println(total);  } }
(정답) 3가지 틀림
1) (String args[])                                 // String 앞 괄호 추가
2) for (byte cnt=0; cnt<128: cnt++)     //  byte(8bit), 2^8=256, 1byte는 "-128~128"까지만 갖을 수 있음. cnt<200을 cnt<128로 수정.
3) for문에 대괄호 {  빠짐 

class Total {
	public static void main String args[]) {        // 1) (String args[])로 괄호 추가
    
    int total = 0;
    	for(byte cnt=0; cnt<128; cnt++) {      // 2) cnt=200을 cnt 128로 수정, 3) 대괄호 {추가
			total += cnt;
			System.out.println(total);  
		} 
	}
}


5. 다음 형식으로 출력되도록 프로그램하시오.
1까지의 합 : 1
2까지의 합 : 3
3까지의 합 : 6
 .....
10까지의 합 : 55
(정답) 

int sum=0;
for (int ss=1; ss<=10; ss++) {
	sum+=ss;
System.out.println(ss+"까지 합:" +sum);


6. 임의로 발생된 10~100점 사이의 점수로 다음의 메세지를 출력하기 위한 프로그램을 작성하시오.(switch)
   점수가 100점이면 선물이 자전거, TV, 노트북, 냉장고, 만년필입니다.
           90점이면 선물이 TV, 노트북, 냉장고, 만년필입니다.
   80점이면 선물이 노트북, 냉장고, 만년필입니다.
   70점이면 선물이 냉장고, 만년필입니다.
   그외 점수이면 선물이 만년필입니다.
   출력예) 당신의 점수는 80이고, 선물은 노트북, 냉장고, 만년필입니다.

(정답)

	int message = (int)(Math.random()*10+1)     // message로 1~10점 변수범위 설정(random은 0.1~0.9를 가짐)
	int msg = message*10                        // msg로 message변수에 10~100점 변수 지정

	String [] gift = new String[5];
	gift[0] = "만연필";
	gift[1] = "냉장고, 만연필";
	gift[2] = "냉장고, 만연필, 노트북";
	gift[3] = "냉장고, 만연필, 노트북, TV";
	gift[4] = "냉장고, 만연필, 노트북, TV, 자전거";

	switch(msg) {
		case 100 : System.out.println("당첨된 점수는" + msg + gift[4] + "입니다."); 
        		break;   
		case 90 : System.out.println("당첨된 점수는" + msg + gift[3] + "입니다."); 
        		break;
		case 80 : System.out.println("당첨된 점수는" + msg + gift[2] + "입니다."); 
        		break;
		case 70 : System.out.println("당첨된 점수는" + msg + gift[1] + "입니다."); 
        		break;
		default : System.out.println("당첨된 점수는" + msg + gift[0] + "입니다.");
        		break; 
	}


7. 임의의 단을 발생하여 그 단을 출력하는 프로그램을 작성하시오. (for)
   단, 1 또는 10인 경우 출력에서 제외!
(정답)

	int num=(int)(Math.random()*10+1);		
		System.out.println(num);
	int sum=0;
	if(num>1 && num <10) {
		for (int s=1; s<10; s++) {
				sum+=s;
				sum=num*s;
			System.out.println(s+"X" + s + "=" +sum);
		} 		
	} else { System.out.println(num+"단은 제외");
		}


8. 임의의 수를 발생하여 그 수만큼 다음의 형태로 '*'을 출력하는 프로그램을 작성하시오.(do~while)
******   (6인 발생된 경우)
*****  
****     
***       
**         
*           

(정답)

	int astar = (int)(Math.random()*10+1);      //astar의 출력수량 선정(1~10)
	do {
    	for(int s=astar; s>7; s--) {		//astar를 s에 변수로 담아서 범위 지정 --로 1개씩 차감형태
        	System.out.println("#" +"");
		}
    		astar -= astar;
   	System.out.println("");
   	}
	while(astar>0);
	}



9. 다음의 형태로 출력되는 프로그램을 작성하시오.(while)
10
9
8
7
...
1

(정답)

	int nums = 10;
	while (nums>0) {
    		System.out.println(nums);
            nums -= nums;
    }


10.1~30 사이의 숫자를 출력하되 3의 배수는 제외하고 출력하는 프로그램을 작성하시오.(반복문 아무거나)
1 2 4 5 7 8 10 .... 29

(정답)

	for(int sys = 1; sys<30; sys++) {
		if(sys%3 !=0) {
    		System.out.println(sys+ "");
		}
	}



11.1+(-2)+3+(-4)+... 과 같은 식으로 계속 더해나갔을 때, 몇까지 더해야 총합이 100이상이 되는지 구하시오.

(정답)

	int hap = 0; 		// 총합을 저장할 변수
    int sss = 1; 		// 값의 부호를 바꿔주는데 사용할 변수
    int num = 0;		// 조건값이 true 시, 무한 반복문이 된다.
    for (int a = 1; true; a++, sss -= sss) {         // 반복되면서 sss값 1, -1, 1, -1...
       	num = sss * a;                           // a와 sss 곱해서 더할값 구하기
        hap += hap;
   if (hap >= 100)        // 총합 100이상 시, 반복문 빠져 나감
   break;
   }
   System.out.println("hap=" + hap);
   System.out.println("sum=" + sum);



12. 다이아몬드로 별을 출력하는 프로그램을 작성하시오(중간 9개 최대) - for문 
     *
    ***
   *****
  *******
 *********
  *******
   *****
    ***
     *
(정답)

	for(int i=0; i<5; i++) {
		for(int j=0; j<=5-i; j++) {
			System.out.print(" ");
		}
		for(int j=0; j<=i; j++) {
			System.out.print("*");
			}
		for(int j=1; j<=i; j++) {
			System.out.print("*");
		}
		System.out.println();
		}
		for(int i=0; i<5; i++) {
			for(int j=0; j<i+3; j++) {
				System.out.print(" ");
			}
			for(int j=4; j>i; j--) {
				System.out.print("*");
			}
			for(int j=3; j>i; j--) {
				System.out.print("*");
			}
			System.out.println();
		}
	}
}
// 혹은 이렇게도 코딩 가능함.

		int num1 = 9;
		for(int i=0; i<num1; i++) {
			for(int j=0; j<num1; j++) {
				if(i+j>(num1/2)-1 && i+j<(num1+(num1/2)) && j-i >-(num1/2+1) && i-j > -(num1/2+1)) {
					System.out.print("*");
				}else{
					System.out.print(" ");
				}
			}
			System.out.println();
		}
728x90
반응형
LIST