AWS BACK DAY 3. "조건문과 반복문: if-else, Switch Case, for/while/do-while문, 별찍기 및 다이아몬드 찍기"

이강용·2023년 1월 3일

Java 기초

목록 보기
3/26
post-thumbnail

Scanner를 이용하여 키보드의 입력을 받자

import java.util.Scanner;
public class Input {
	public static void main(String[] args) {
			
		Scanner sc = new Scanner(System.in);
		
		System.out.println("문자열1: ");
		String str1 = sc.nextLine();
		System.out.println("문자열2: ");
		String str2 = sc.next();
		System.out.println("정수: ");
		int number1 = sc.nextInt();
		System.out.println("실수: ");
		double number2 = sc.nextDouble();
		
		System.out.println("문자열1: " + str1);
		System.out.println("문자열2: " + str2);
		System.out.println("정수: " + number1);
		System.out.println("실수: " + number2);
			
	}

}

문1) 이름, 나이, 주소, 연락처를 입력받아 출력하는 프로그램 작성

import java.util.Scanner;
public class Input2 {
	public static void main(String[] args) {
			
		String name =null;
		int age = 0;
		String address =null;
		String pn = null;
		
		Scanner sc = new Scanner(System.in);
		
		System.out.println("이름: ");
		name = sc.next();
		System.out.println("나이: ");
		age = sc.nextInt();
		sc.nextLine(); //<--- 핵심 키워드 (nextLine()의 오류를 막아준다
		System.out.println("주소: ");
		address = sc.nextLine(); //띄어쓰기 포함 space바 사용시 예외)
		System.out.println("연락처: ");
		pn = sc.next();
		System.out.println("사용자의 이름은 " + name + "이고 나이는 " + age + "살입니다.");
		System.out.println("주소는 " + address + "에 거주중입니다.");
		System.out.println("연락처는 " + pn + "입니다.");
		
	}

}

nextLine() 오류 해결방법

why?

  • 키보드의 buffer에 이전 입력값이 남아있기때문에 (enter값)

해결방법 1.

nextInt 이후 nextLine()하기전, nextLine()을 한번 더 작성하여 개행문자 제거

해결방법 2. (왜 인지 생각 해볼것)

nextLine()로 읽어들인 후 Integer.parseInt()

문2) 정수3개를 입력받아 정수3개를 출력하고 최대값, 최소값을 출력하는 프로그램 작성

import java.util.Scanner;
public class Input2 {
	public static void main(String[] args) {
			
		Scanner sc = new Scanner(System.in);
		
		int a = 0;
		int b = 0;
		int c = 0;
		int max = 0;
		int min = 0;
		
		System.out.print("정수 3개 입력:");
		a = sc.nextInt();
		b = sc.nextInt();
		c = sc.nextInt();
		
		max = a;
		max = b > max ? b : max;
		max = c > max ? c : max;
		min= a;
		min = b < min ? b : min;
		min = c < min ? c : min;
		
		System.out.println("a: " + a);
		System.out.println("b: " + b);
		System.out.println("c: " + c);
		System.out.println("최대값: " + max);
		System.out.println("최소값: " + min);
	}
}

📌 조건문 if와 else

조건문이란? 주어진 조건에 따라 다른 문장을 선택할 수 있도록 프로그래밍하는 것

  • 기본구조
if(조건식){
	수행문; // 조건식이 참일 경우에 이문장을 수행 
}
if(조건식){
	수행문1; // 조건식이 참일 경우에 이 문장을 수행
}else{
	수행문2; // 조건식이 거짓일 경우에 이 문장을 수행
}
public static void main(String[] args) {
		
		int num = 10;
		int num2 = 20;
	
		if(num > num2) {
			System.out.println("num이 num2보다 큽니다.");
			}
		else if(num == num2){
			System.out.println("num과 num2가 같습니다.");
		}
		else {
			System.out.println("num이 num2보다 작습니다.");
			}
		}

문3) if문을 활용하여 정수3개를 입력받아 최대값, 최소값을 출력하는 프로그램 작성

import java.util.Scanner;

public class Conditional1 {
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		int a = 0;
		int b = 0;
		int c = 0;
		int max = 0;
		int min = 0;
		
		System.out.println("정수 3개 입력: ");
		a = sc.nextInt();
		b = sc.nextInt();
		c = sc.nextInt();

		max = a;
		min = a;
		
		if(b>max) max = b;
		if(c>max) max = c;
		
		if(b<min) min = b;
		if(c<min) min = c;
		
		System.out.println("최대값: "+ max);
		System.out.println("최소값: "+ min);
	}
}

문4) 1안) If문을 활용하여 시험 성적을 학점으로 계산하는 프로그램을 작성

조건
score가 0점보다 작거나 100점보다 크면 계산불가
score가 90~100점이면 A학점 (95이상 A+)
score가 80~89점이면 B학점 (85이상 B+)
score가 70~79점이면 C학점 (75이상 C+)
score가 60~69점이면 D학점 (65이상 D+)
score가 0 ~ 59점이면 F학점

1안

if(score<0 || score>100) {
		System.out.println("계산불가");
	}
	else {
	
	if(score>89) {
		if(score>94) {
			grade ="A+";
		}
		else
		grade = "A";
	}
	
	else if(score>79) {
		if(score>85) {
			grade ="B+";
		}
		else
		grade = "B";
	}
	else if(score>69) {
		if(score>75) {
			grade ="C+";
		}
		else
		grade = "C";
	}
	else if(score>59) {
		if(score>65) {
			grade ="D+";
		}
		else
		grade = "D";
	}
	else {
		grade = "F";
	}
	
	System.out.println("점수(" + score + "): " + grade + "학점");

		}
	}
	
}

2안

if(score < 0 || score > 100) {
		grade = null;
	}else if(score > 89) {
		grade = "A";
	}else if(score > 79) {
		grade = "B";
	}else if(score > 69) {
		grade = "C";
	}else if(score > 59) {
		grade = "D";
	}else {
		grade = "F";
	}
	
	if(score > 59 && score<101 && (score % 10 > 4 || score == 100)) {
		grade +="+";
	}
	if(grade == null) {
		System.out.println("계산불가");
	}else {
	
	System.out.println("점수(" + score + "): " + grade + "학점");
		}

Java 규칙 링크

📌 Switch Case

  • 기본구조
switch(조건){
case 1 :
	수행문1;
	break;
    .
    .
    .
 default :
 }

📌 반복문

반복문이란? 반복되는 일을 처리하기 위해 사용하는 것

for문

  • 반복문 중에서 가장 많이 사용하는 반복문

기본 구조

for(초기화식;조건식;증감식){
	수행문;
}

while문

기본 구조

while(조건식){
	수행문1; // 조건식이 참일 동안 반복 수행

do while 문

  • {} 안의 문장을 무조건 한 번 수행한 후에 조건식을 검사
do{
	수행문1;
}while(조건식);
	수행문2;
public static void main(String[] args) {
		
		int num = 1;
        int sum = 0;
		
		do{
        sum += num;
        num++;
        }while(num <= 10);
        
        System.out.println("1부터 10까지의 합은 " + sum + "입니다");
		
	}

문5) 1~100까지 합을 구하는 프로그램 작성

public static void main(String[] args) {
		
		int sum = 0;
		
		for(int i = 0; i < 100; i++) {  
			sum += i+1;
		}
		System.out.println(sum);
		
	}

문5) 변수 a,b 사이의 합을 구하는 프로그램 작성

public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		int startNumber = 0;
		int endNumber = 0;
		
		System.out.println("시작: "); 
		startNumber = sc.nextInt();
		
		System.out.println("끝: "); 
		endNumber = sc.nextInt();
		
		int total = 0;
		
		for(int i = 0; i < endNumber - startNumber+1; i++) {
			total += i + startNumber;
		}
		System.out.println("총합: " + total) ;
		
	}

문6) 키보드로 입력받은 횟수만큼 입력받은 a,b를
더하는 프로그램을 작성
반복횟수 :
N번 반복
a:
b:
N번 합 :
-------
총합:

public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		int count = 0 ;
		int total = 0;
		
		System.out.println("반복횟수: ");
	
			count = sc.nextInt();
			System.out.println();
		
		for(int i = 0; i < count; i++) {
			int a = 0; // 변수 a,b는 for문 밖에서 쓸일이 없기때문에 지역변수로 선언
 			int b = 0; //
			
			System.out.println(i+1+"번 반복");
			System.out.println("a: ");
			a = sc.nextInt();
			System.out.println("b: ");
			b = sc.nextInt();
			
			total += a + b;
			
			total = total+a+b;
			
			System.out.println(i+1+"번 합: "+(a+b));
			System.out.println();
			
		}
		System.out.println("총합: " + total);
	}

for문으로 별찍기

for(int i = 0; i< 10; i++) {
		for(int j = 0; j<i+1;j++) {
			System.out.print("*");
		}
		System.out.println();
		
	}

결과

for(int i = 0; i< 10; i++) {
		for(int j = 0; j<10-i;j++) {
			System.out.print("*");
		}
		System.out.println();
		
	}

결과

for(int i=0; i<10; i++) {
		for(int j=0; j<9-i; j++) {	
			System.out.print(" ");
		}
		for(int j=0; j<i+1; j++) {	
			System.out.print("*");
		}
		System.out.println();
	}

결과

for(int i = 0; i< 10; i++) {
			for(int j = 0; j<i;j++) {
				System.out.print(" ");
			}
			for(int j =0; j<10-i; j++) {
				System.out.print("*");
			}
			System.out.println();
     }

결과

for(int i = 0; i<10;i++) {
		for(int j = 0;j<9-i;j++) {
			System.out.print(" "); 
		}
		for(int j = 0; j<2*i+1;j++) {
			System.out.print("*");
		}
		System.out.println();
	}

결과

for문으로 다이아 찍기 (Max 5)


public class Method5 {
	
	
	
public static void main(String[] args) {
	for(int i = 0; i<5;i++) {
	    
		for(int j = 0;j<4-i;j++) {
			System.out.print(" "); 
		}
		for(int j = 0; j<2*i+1;j++) {
			System.out.print("*");
		}
		
		System.out.println();
	}
	
	for(int i = 3; i>=0;i--) {
	    
		for(int j = 4;j>i;j--) {
			System.out.print(" "); 
		}
		for(int j = 1; j<=2*i+1;j++) {
			System.out.print("*");
		}
		System.out.println();
	}
  }
		
}

결과

반복횟수 5회의 다이아 찍기

for문으로 다이아 찍기 (Max 10)

public static void main(String[] args) {
	for(int i = 0; i<10;i++) {
	    
		for(int j = 0;j<9-i;j++) {
			System.out.print(" "); 
		}
		for(int j = 0; j<2*i+1;j++) {
			System.out.print("*");
		}
		
		System.out.println();
	}
	
	for(int i = 8; i>=0;i--) {
	    
		for(int j = 9;j>i;j--) {
			System.out.print(" "); 
		}
		for(int j = 1; j<=2*i+1;j++) {
			System.out.print("*");
		}
		System.out.println();
	}
  }

결과

반복횟수 10회의 다이아 찍기

📌 언제 for문 , 언제 while문을 써야하는가?

for문
index : 순서가 있는 경우

while문
순서보다 조건이 중요할 때

import java.util.Scanner;

public class While1 {
	
	public static void main(String[] args) {
		
		
		
		Scanner sc = new Scanner(System.in);
		
		String select = null;
	
		while(true) { // 무한루프
			System.out.println("x입력시 멈춤: ");
			select = sc.nextLine();
			
			if(select.equals("x")||select.equals("X")) {
				System.out.println("프로그램을 멈춥니다.");
				break;
			}
			
			System.out.println("계속 실행!");
		
		}
		
		System.out.println("프로그램 종료됨");
		
	}

}
profile
HW + SW = 1

0개의 댓글