기록해! 정리해!

자바 - 난수 , switch, break, for문, while문, 확인문제 (3장,4장) 본문

JAVA

자바 - 난수 , switch, break, for문, while문, 확인문제 (3장,4장)

zsuling 2022. 7. 6. 15:58

07/06

 

º 난수

package test;

public class test78 {
	public static void main(String[] args) {
	    for (int i=1; i<=20; i++) {
		int r = (int) (Math.random()*3)+1; // 갯수:3 시작:1
		System.out.print(r+" ");
	}
	}
}

-- 1 의 갯수는 몇개인지 2의 갯수는 몇개인지... 나타내보자 (114p)

package test;

public class test78 {
	public static void main(String[] args) {
	    
		int count1 = 0; int count2=0; int count3=0;
		for (int i=1; i<=30; i++) {
		int r = (int) (Math.random()*3)+1; 
		System.out.print(r + " ");
		
		if(i%10 == 0) {
			System.out.println(" ");
		}
		
		if(r == 1) {
			count1+=1;
		}else if(r == 2) {
			count2+=1;
		}else if(r == 3) {
			count3+=1;
		}
		}
		System.out.println(" ");
		System.out.println("1의 개수:"+count1);
		System.out.println("2의 개수:"+count2);
		System.out.println("3의 개수:"+count3);
	}
	}

º 중첩 if 문

package test;

public class test78 {
	public static void main(String[] args) {
	    
	int score = (int)(Math.random()*20) + 81;
	System.out.println("점수"+score);
	
	String grade;
	
	if(score>=90){
		if(score>=95) {
			grade="A+";
		}else {
			grade="A";	
		}
		}else {
			if (score>=85) {
				grade="B+";
			}else {
				grade="B";
			}
		}
		System.out.println("학점: " + grade);
	}
	}

º if문으로 바꿔보기

 

-원문코드

package test;

public class test78 {
	
	public static void main(String[] args) {
	
	String stuff = "TV";
	String res = null;
	
	res = stuff.equals("TV")?"Walter":stuff.equals("Movie")?"white":"No Result";
	
	System.out.print(res);
	}
	}

-if 문

package test;

public class test78 {
	
	public static void main(String[] args) {
	
	String stuff = "TV";
	
	
	if(stuff == "TV") {
		System.out.println("Walter");
	}else if(stuff == "Movie") {
		System.out.println("white");
	}else {
		System.out.println("No result");
	}

	}
	}

 

º  switch 구문 (주사위 번호 하나 뽑기)

package test;

public class test78 {
	
	public static void main(String[] args) {
	
		int num = (int)(Math.random()*6)+1;
		
	switch(num) {
	case 1 :
		System.out.println("1번이 나왔습니다.");
		break;
	case 2 :
		System.out.println("2번이 나왔습니다.");
		break;
	case 3 :
		System.out.println("3번이 나왔습니다.");
		break;
	case 4 :
		System.out.println("4번이 나왔습니다.");
		break;
	case 5 :
		System.out.println("5번이 나왔습니다.");
		break;
	default :
		System.out.println("6번이 나왔습니다.");
		break;
	}
	}
	}

break가 없으면 없는 곳부터 출력찍고 내려옴

- Switch  확인문제 1.

package test;

public class test78 {
	
	public static void main(String[] args) {
	
		   int wd=0;
		      String days[]={"sun","mon","wed","sat"};
		      for(String s:days) {
		         switch(s) {
		         case "sat":
		         case "sun":
		            wd-=1;
		         break;
		      
		         case "mon":
		            wd++;
		         case "wed":
		            wd+=2;
		         }
		      }
		      System.out.println(wd);
		   }
		}

:  sat 은 break없으니까 내려가서 sun과 같은 값 -1 임

   -1 -1 +1+2 +2 = 3

 

 

- Switch  확인문제 2

package test;

public class test78 {
	
	public static void main(String[] args) {
	
		   int wd=0;
		      String days[]={"sun","mon","wed","sat"};
		      for(String s:days) {
		         switch(s) {
		         case "sat":
		         case "sun":
		            wd -= 1;
		         break;
		         case "mon":
		            wd -= 1;
		         break;   
		         case "wed":
		            wd += 2;
		         }
		      }
		      System.out.println(wd);
		   }
		}

: -1 -1 -1 +2 = -1

 

- Switch  확인문제 3

 

break 는 반복문(for, while)안이나 switch안에서 사용가능

continue 는 반복문에서만 사용할 수 있다.

 

package test;

public class test78 {
	
	   public static void main(String[] args) {
	      int price= 1000;
	      int qty=2;
	      String grade="2";
	      double discount= 0.0;
	      switch(grade)
	      {
	         case"1":
	            discount=price*0.1;
	            break;
	         case "2":
	            discount=price*0.5;
                continue; // 라인 16. 지우면 됨
	         default:
	            System.out.println("Thank You!");
	         }
	      System.out.println(discount);
	      }
}

: B

 

- Switch  확인문제 4.

package test;

public class test78 {
	
	public static void main(String[] args) {
     //line n1
		switch (x) {
		case 1 :
			System.out.println("One");
			break;
		case 2:
			System.out.println("Two");
			break;
		}
	}
}

: A 

 

- Switch  확인문제 5

package test;

public class test78 {
	
	   public static void main(String[] args) {
		   for(int i=1; i<=10; i++) {
		if(i == 5) {
			continue;
		} // 1 2 3 4 6 7 8 9 10 <-- 5 생략
		System.out.print(i + " ");
		   }
		   
		   System.out.println("");
		   
		   for(int i=1; i<=10; i++) {
			   switch(i) {
			   case 3:
				   continue; 
			   } //1 2 4 5 6 7 8 9 10 <-- 3 생략
		  System.out.print(i + " ");
		   }
	   }		   
	}

ㄴ continue를 break로 바꾸면

package test;

public class test78 {
	
	   public static void main(String[] args) {
		   for(int i=1; i<=10; i++) {
		if(i == 5) {
			break; // for문을 빠져나가라
		} // 1 2 3 4 <-- for문을 빠져나감
		System.out.print(i + " ");
		   }
		   
		   System.out.println("");
		   
		   for(int i=1; i<=10; i++) {
			   switch(i) {
			   case 3:
				   break; // 정지에 대한 의미
			   } // 1 2 3 4 5 6 7 8 9 10 <--의미가 없어짐
		  System.out.print(i + " ");
		   }
	   }		   
	}

break 

1) if문에서는 for 문을 빠져나가라

2) switch문에서는 정지해라

- Switch  확인문제 6

package test;

public class test78 {
	
	   public static void main(String[] args) {
		   
		   boolean opt = true;
		   switch (opt) {
		   case "true":
			   System.out.println("True");
			   break;
		   default:
			   System.out.println("***");
		   }
		   System.out.println("Done");
	   }		   
	}

 

답 A :

- Switch  확인문제 7 (지역변수) 

package test;

public class test78 {
	
	   public static void main(String[] args) {
		   
		char colorcode = 'y';
		switch (colorcode) {
		 case 'r':
			 int color = 100;
			 break;
		 case 'b':
			 color = 10;
			 break;
		 case 'y':
			 color = 1;
			 break;
		}
		System.out.println(color);
	   }		   
	}

답 : A 

 

º if문으로 바꿔보기

-원문 코드

package test;

public class test78 {
	
	   public static void main(String[] args) {
	char grade = 'B';
	
	switch(grade) {
	case 'A':
	case 'a':
		System.out.println("우수 회원입니다.");
		break;
	case 'B':
	case 'b':
	    System.out.println("일반 회원입니다.");
	    break;
	default:
		System.out.println("손님입니다.");
	     }	
	   }
	}

-if 문

package test;

public class test78 {
	
	   public static void main(String[] args) {
	char grade = 'B';
	
	if(grade == 'A'|| grade == 'a') {
		System.out.println("우수 회원입니다.");
	}else if(grade == 'B'||grade =='b') {
		System.out.println("일반 회원입니다.");
	}else {
		System.out.println("손님입니다.");
	     }	
	   }
	}

º for 문

- 1 3 5 7 9 출력하기

package test;

public class test78 {
	
	   public static void main(String[] args) {
		
		   for (int i = 1; i<= 10 ; i+=2) {

				   System.out.print(i + " "); 
			   }
	   }		
}

- 10부터 거꾸로 출력하기

package test;

public class test78 {
	
	   public static void main(String[] args) {
		
		   for (int i = 10; i >= 1 ; i--) {

				   System.out.print(i + " "); 
			   }
	   }		
}

- 누적합 찍기

package test;

public class test78 {
	
	   public static void main(String[] args) {
		  int sum = 0;
		   for (int i = 1; i <= 10 ; i++) {
			   
			System.out.print( i + " ");
             sum = sum + i;
				   
			   }
		   System.out.println("\n누적합: " +sum ); 
	   }		
}

º KeyCode

:여러개의 값을 입력 받아도 첫번째 값만 받아 올 수 있다.

package test;

import java.io.IOException;

public class test78 {
	
	   public static void main(String[] args) {
		 try {
		   int keyCode = System.in.read();
		 System.out.println("입력키: "+keyCode);
	   }catch (IOException e) {
		   e.printStackTrace();
	   }
	   }		
}

아스키코드

 

º Scanner

: 값을 그대로 받아온다

package test;

import java.io.IOException;
import java.util.Scanner;

public class test78 {
	
	   public static void main(String[] args) {
			 
			 @SuppressWarnings("resources")
			Scanner scanner = new Scanner(System.in);
			String keyValue = scanner.nextLine();
			 
		 System.out.println("입력키: "+ keyValue);
	   
	   }		
}

º do while

package test;

import java.util.Scanner;

public class test78 {
	
	   public static void main(String[] args) {
			System.out.println("메세지를 입력하세요.");
			System.out.println("프로그램을 종료하려면 q를 입력하세요.");
	   
			Scanner scanner = new Scanner(System.in);
			String inputString;
			
			do {
				System.out.println(">");
				inputString = scanner.nextLine();
				System.out.println(inputString);
			}while( ! inputString.equals("q"));
			
			System.out.println();
			System.out.println("프로그램 종료");
	   }		
}

º 값을 입력받아서 입력받은 숫자의 구구단을 출력하시오 

문자를 숫자화 하는 방법 : Integer.parseInt()

숫자를 문자화 하는 방법 : Double.parsInt()

package test;

import java.util.Scanner;

public class test78 {
	
	 @SuppressWarnings("resource")
	   public static void main(String[] args) {
		 
		   
		   System.out.println("구구단을 입력해 주세요: ");
		   
		   Scanner scanner = new Scanner(System.in);
		   String keyValue = scanner.nextLine();
		   
		   int dan = Integer.parseInt(keyValue);
		   for (int i=1; i <= 9; i++) {
			   System.out.println(dan + "X" + i + "=" + dan*i + "\t");
		   }	   
	   }		
}

- 10을 넣으면 프로그램 종료하기

package test;

import java.util.Scanner;

public class test78 {
	
	 @SuppressWarnings("resource")
	   public static void main(String[] args) {
		 
		   Scanner scanner = new Scanner(System.in);
		   
		   int dan = 0;
		   while( dan != 10 ) {
			   
			   System.out.print("구구단을 입력해 주세요: ");
			   String keyValue = scanner.nextLine();
			   
               dan = Integer.parseInt(keyValue);
		   if (dan != 10) {
			   for (int i=1; i <= 9; i++) {
			   System.out.print(dan + "X" + i + "=" + dan*i + "\t");
			 }			   
		   }		   
		   System.out.println();
		   }
		   System.out.println("프로그램 종료");   
		   }
	 }

do while 로 풀어보기

package test;

import java.util.Scanner;

public class test78 {
	
	@SuppressWarnings("resourse")
	public static void main(String[] args) {
	System.out.println("입력받은 수로 구구단을 출력합니다.");
	
	Scanner scanner = new Scanner(System.in);
	String str;
	
		do {
			
			System.out.print(">");
			str = scanner.nextLine();
			int dan = Integer.parseInt(str);
			
			if(dan != 10) {
				for(int i=1; i<=9; i++) {	
					if(i == 9){
						System.out.println(dan+"x"+i+"="+dan*i+"\t");
					}else {
						System.out.print(dan+"x"+i+"="+dan*i+"\t");
					}
				}
			System.out.println("구구단을 입력해주세요");
			}else {
			System.out.println("");	
			}

		}while(! str.equals("10") );
		
		System.out.println("프로그램이 종료되었습니다.");
	}
}

 

º  "이중for문을 이용하여 구구단을 출력하시오" - 5,6,7,8단 만

package test;

import java.util.Scanner;

public class test78 {
		
		public static void main(String[] args) {
	
		    for (int dan=5; dan <= 8; dan++) {
		    	  for(int i=1; i<=9 ; i++) {
		    		  System.out.print(dan + "X" + i + "=" + dan*i + "\t");
		   }
		    	  System.out.println();
		}
	}
}

- 이중while문

package test;

public class test78 {
		
  public static void main(String[] args) {    
      
	  int dan = 5;
	  while(dan < 9) {
	  int i = 1;
      while (i < 10) {
    	  System.out.println(dan + "x" + i + "=" + i * dan + "  ");
         i++;
   }
      dan++;
  }
 }
}

-안에는 while 밖에는 for (ㅎㅎ 반대였음)

package test;

public class test78 {
		
  public static void main(String[] args) {    
      
	  int dan = 5;
	  while(dan < 9) {
	     for(int i=1; i<=9; i++) {
    	  System.out.println(dan + "x" + i + "=" + i * dan + "  ");
    	 
   }
      dan++;
      System.out.println();
  }
	 
 }
 
}

-if문 써서 5,8단만 나타내기

package test;

public class test78 {
		
  public static void main(String[] args) {    
     
	  for(int dan=5; dan<=8; dan++) {
	   int i = 1;
	       while(i <= 9) {
	    	     if(dan == 5 || dan == 8) {
    	     System.out.println(dan + "x" + i + "=" + i * dan + "  ");   
	    	 }
	     i++;
	  }
  }
 }
}

º 4장 확인문제

- 3번

: 3의 배수의 합을 구하시오

package test;

public class test78 {
		
  public static void main(String[] args) {    
     
	 int sum = 0;
	 for(int i=1 ; i<=100; i++) {
		 if(i % 3 == 0) 
		 sum = sum + i;
		
	   }
	 System.out.println("3의 배수의 합: " + sum );
	 }
 }

-4번

:두 개의 주사위를 던졌을 때 나오는 눈을 (눈1, 눈2) 형태로 출력하고, 

 눈의 합이 5가 아니면 계속 주사위를 던지고,

 눈의 합이 5이면 실행을 멈추는 코드를 작성해보세요 (1,4) (4,1) (2,3) (3,2)

package test;

public class test78 {
		
  public static void main(String[] args) {    
 
	  int k1 = 0;
	  int k2 = 0;
	  
	  while(k1+k2!=5) {
		  k1 = (int)(Math.random()*6)+1;
		  k2 = (int)(Math.random()*6)+1;
		  System.out.println("("+k1+","+k2+")");
		    }   
	  }
  }

-5번

: 중첩for문을 사용하여 방정식 4x +5y = 60의 모든 해를 구해서 (x,y)형태로 출력하기

package test;

public class test78 {
		
  public static void main(String[] args) {    
 
	for(int x=1; x<=10; x++) {
		for(int y=1; y<=10; y++) {
			if(4*x+5*y == 60) {
				System.out.println("("+x+","+y+")");
			}
		}
	}
	  }
  }

-6번

: for문을 이용해서 실행결과와 같은 삼각형을 출력하는 코드를 작성해보시오

package test;

public class test78 {
		
  public static void main(String[] args) {    
 
	  for (int i = 1; i <= 5; i++) {
	         for (int j = 1; j <= i; j++) {
	            System.out.print("*");
	         }
	         System.out.println(" ");
	      }

	   }
}

Comments