-
for문/while문/switch문Java 2021. 11. 21. 23:03
< for문, while문 이용>
- 콘솔에서 단을 입력받아 해당하는 단을 출력하라.
실행
단=8
8*2=16
8*3=24
.
.
8*9=72
import java.util.Scanner; public class practice01 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.print("단="); int num = Integer.parseInt(scan.nextLine()); // 1. for문 이용 for(int i=2; i<=9; i++) { System.out.printf("%d * %d = %d\n", num, i, num*i); } // 2. while문 이용 int i=1; while(true) { i++; System.out.printf("%d*%d=%d\n", num, i, num*i); if(i==9) break; } } }
- 홀수에 해당하는 단만 출력
public class practice01 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.print("단="); int num = Integer.parseInt(scan.nextLine()); // 1. for문 이용 for(int i=1; i<=9; i+=2) { System.out.printf("%d * %d = %d\n", num, i, num*i); } // 2. while문 이용 int i=0; while(true) { i++; if(i%2==0) continue; // i가 짝수이면 print 넘어가지말고 i++ 실행 if(i==9) break; System.out.printf("%d*%d=%d\n", num, i, num*i); } } }
<이중for문>
- 구구단 출력
public class practice02 { public static void main(String[] args) { for(int i=1; i<10; i++) { for(int j=2; j<10; j++) { System.out.print(j+"x"+i+"="+i*j+"\t"); } System.out.println(); } } }
- 구구단 출력2
public class practice02 { public static void main(String[] args) { // 1~3 -- 4~6 -- 7~9 for(int i=1; i<10; i+=3) { // 단 출력 for(int head=i; head<i+3; head++) { System.out.print("="+head+"단=\t"); } System.out.println(); for(int j=2; j<9; j++) { for(int k=i; k<i+3; k++) { System.out.print(k+"x"+j+"="+k*j+"\t"); } System.out.println(); }System.out.println(); }
- 별탑 출력
public class practice01 { public static void main(String[] args) { for(int i=1; i<=9; i+=2) { // 공백 -> 4,3,2,1,0 for(int k=1; k<=(9-i)/2 ;k++) { System.out.print(" "); } // 별표 -> 1개,3개,5개,7개,9개 for(int j=1; j<=i; j++) { System.out.print("*"); } System.out.println(); } }
<출력>
12345
12345
12345
12345
12345
public class practice03 { public static void main(String[] args) { // for문활용 for(int i=1; i<6; i++) { // 5번 반복 for(int j=1; j<6; j++) { System.out.print(j); }System.out.println(); } // while문 활용 int i=1; while(i<=5) { int k=1; while(k<=5) { System.out.print(k); k++; }System.out.println(); i++; } }
- 1~100까지 값 중 5를 제외하고 출력
public class practice03 { public static void main(String[] args) { // for문활용 for(int i=1; i<=100; i++) { if(i%5!=0) { System.out.println(i); } } // while문 활용 int i=0; while(i<100) { if(i%5==0) { i++; continue; } System.out.println(i); i++; } } }
- 콘솔에서 정수를 입력받아 입력받은 값까지의 합, 홀수 합, 짝수 합을 구하라
public class WhileEx { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("정수입력="); int num = sc.nextInt(); int i=0; // 합 int sum=0; int sum2=0; int sum3=0; while(i<num) { sum+= ++i; // 전체 합 if(i%2==0) { sum2+=i; // 짝수 합 }else { sum3+=i; // 홀수 합 } } System.out.println("1~"+num+"까지의 합은 "+sum); System.out.println("1~"+num+"까지의 홀수의 합은 "+sum2); System.out.println("1~"+num+"까지의 홀수의 합은 "+sum3); } }
<if문/switch문>
- 성적산출
콘솔에서 국어,영어,수학 점수를 입력받아 총점, 평균, 학점을 구하라.
학점기준
90~100 A
80~89 B
70~79 C
60~69 D
0~59 F
실행
국어=80
영어=80
수학=80
총점=240
평균=80.0
학점=B
** 주의점: 입력은 정수이나 평균은 실수임import java.util.Scanner; public class SungJuk { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.print("국어="); int kor = scan.nextInt(); System.out.print("수학="); int math = scan.nextInt(); System.out.print("영어="); int eng = scan.nextInt(); System.out.println("총점="+(kor+eng+math)); double avg = (double)(kor + math + eng)/3; System.out.println("평균="+avg); // if문 String grade = "F"; if (avg>=90) { grade = "A"; }else if (avg>=80) { grade = "B"; }else if (avg>=70) { grade = "C"; }else if (avg>=60) { grade = "D"; } System.out.print("성적=" + grade); // switch문으로 구하기 switch((int)avg/10) { case 10: case 9: grade = "A"; break; case 8: grade = "B"; break; case 7: grade = "C"; break; case 6: grade = "D"; break; default: grade = "F"; } System.out.print("성적=" + grade); } }
- 화폐수 구하기
금액을 입력받아 화폐의 수를 출력
import java.util.Scanner; public class MoneyCount2 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("금액을 입력하세요?="); int money = sc.nextInt(); int div = 5; int won = 50000; for (; money > 0;) { int cnt = money / won; System.out.println(won + "->" + cnt); if (won >= 1000) { System.out.print("장"); } else { System.out.print("개"); } money -= cnt * won; // 다음화폐만들기 won = won / div; if (div == 5) div = 2; else div = 5; } } }
** 배열을 이용
public class InsertSort { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("금액을 입력하시오:"); int money = sc.nextInt(); // 화폐단위: 50000, 10000, 5000, 1000, 500, 100, 50, 10, 5, 1 // 나누기 5, 2, 5, 2 반복.. int danwi[] = {50000, 10000, 5000, 1000, 500, 100, 50, 10, 5, 1}; for(int i=0; i<danwi.length; i++) { int cnt = money / danwi[i]; // 장, 개 if(cnt>0) { System.out.print(danwi[i]+"원="+cnt); if (danwi[i]>=1000) { System.out.print("장"); }else { System.out.print("개"); } System.out.println(); } money -= cnt*danwi[i]; } } }
<난이도up 예제>
- 달력만들기
import java.util.Calendar; import java.util.Scanner; public class practice05 { public static void main(String[] args) { do { Scanner scan = new Scanner(System.in); // 년월입력 --> 1일의 요일 구하기 --> 그만큼 공백 생성 System.out.print("년="); int year = Integer.parseInt(scan.nextLine()); System.out.print("월="); int month = Integer.parseInt(scan.nextLine()); Calendar date = Calendar.getInstance(); //오늘 date.set(year, month-1, 1); // 입력받은 년월 1일로 변경 int week = date.get(Calendar.DAY_OF_WEEK); //요일 //달의 1일 요일까지 구했으면 앞에 공백 몇개 찍을 지 알수 있음 //이제 달이 몇일까지 있는지 구하면 됨 // 30: 4,6,9,11월 // 31: 1,3,5,7,8,10,12월 // 28or29: 2월 int lastDay = 31; //초기값으로 설정 switch(month) { case 4: case 6: case 9: case 11: lastDay = 30; break; case 2: // 윤년인 경우와 아닌 경우 if(year%4==0 && year%100!=0 || year%400==0) { lastDay = 29; }else { lastDay = 28; } } // 달력 프린트 System.out.println("\t\t"+year+"년 "+month+"월"); System.out.println("일\t월\t화\t수\t목\t금\t토"); // 공백출력 for(int space=1; space<week; space++) { System.out.print(" " + "\t"); } // 날짜 출력 for(int day=1; day<=lastDay; day++) { System.out.print(day+"\t"); // 옆으로만 쭉쭉 나열하게 됨 if((day+week-1)%7==0) { System.out.println(); // 7개마다 한줄씩 내려라 } } System.out.println(); // 계속여부 확인 System.out.println("계속하시겠습니까? "); String res = scan.nextLine(); if(!res.equals("y")) { break; } } while(true); } }
- 알파벳 다이아몬드만들기
public class azDiamond { public static void main(String[] args) { // 홀수가 아니면 홀수로 변환 Scanner sc = new Scanner(System.in); System.out.print("임의의 홀수 입력:"); int max = sc.nextInt(); max = (max%2==0)? max+1: max; char txt = 'A'; int step = 2; for(int i=1; i>=1; i+=step) { // 공백 for(int space=1; space<=(max-i)/2; space++) { System.out.print(" "); } // 문자 for(int cnt=1; cnt<=i; cnt++) { System.out.print(txt++); if(txt>'Z') { txt = 'A'; } } System.out.println(); if(max<=i) step-=2; } } }
- 콘솔에서 단을 입력받아 해당하는 단을 출력하라.