JAVA - 반복문 (for, while, do-while), 스캐너

갓김치·2020년 8월 2일
0

초급자바

목록 보기
6/8
  • 어떤 작업이 반복적으로 수행되도록 할때 사용된다
  • 반복문은 주어진 조건이 만족하는 동안 문장을 반복수행한다.
  • for문: 반복횟수를 알고 있을때
  • while문: 반복횟수를 모를 때 -> 문제 난이도가 더 높다

for loop

for(초기화;조건식;증감식){
	조건식이 만족할때 수행될 문장;
}
  • 수행순서
    • 초기화 -> 조건식 -> 반복문장 실행 -> 증감식
    • -> 조건식 -> 실행 -> 증감 -> 조건식 -> ... -> 조건 불일치시 종료

for 예시

//1. 5~16까지의 합을 구하여라
int sum = 0
//sum += 5 -> sum = sum + 5 = 0 + 5 (sum = 5)
//sum += 6 -> sum = sum + 6 = 5 + 6 (sum = 6)
//...
//sum += 16 -> sum = sum + 16 = (5+6+..+15) + 16
//시작 5, 끝 16, 증가량 1, 수행문장 sum += num;
for(int num = 5;num < 17;num++){
	sum += num;
}

//2. 3이상 42이하에서 짝수인 정수의 합
int sum = 0;
for(int num=3;num < 43;num++){
	if(num%2 == 0){
    	sum += num;
    }
}

//3. 7초과 57미만 2의 배수거나 3의 배수인 정수의 합
int sum = 0;
for(int num = 8;num < 57;num++){
	if(num%2 == 0 || num%3 == 0){
    	sum += num;
    }
}

for 구구단

//1. 구구단 2단을 출력하라
//System.out.println(2+"*"+1+"="+2*1)
//System.out.println(2+"*"+2+"="+2*2)
//...
//System.out.println(2+"*"+9+"="+2*9)
//시작1, 끝9, 증감+1, 반복문 System.out.println(2+"*"+num+"="+2*num);
for(int num = 2;num < 10;num++){
	System.out.println(2+"*"+num+"="+2*num);
}

//2. 구구단 전체를 출력하라
for(int dan = 2;dan < 10;dan++){
	for(int num = 1;num < 10;num++){
    	System.out.println(dan+"*"+num+"="+dan*num)
    }
}

while loop

  • 반복횟수를 알수 없을때 많이 사용. (알때 사용해도 상관없으나 for문이 더 편함)
  • 조건식과 수행해야할 블럭{}만으로 구성되어 있다.
while(조건식){
	조건식이 true일때 수행될 문장
}

while 예시

//1. 3~15까지의 합계
//sum += 3
//sum += 4
//...
//sum += 15
//시작3, 끝 15, 증감+1, 반복 sum += num;
int num = 3;
int sum = 0;
while(num < 16){
	sum += num;
    num++;
}

//2. 1~100까지의 정수중 4의 배수의 합계
int num = 1;
int sum = 0;
while(num < 101){
	if(num%4 == 0){
    	sum += num;
    }
    num++;
}

//3. 5~? 합계를 구하였을때 합계가 100이상이 되는 ?의 값을 구하여라
//풀이방법1
int sum = 0;
int num = 5;
while(true){
	sum += num;
    if(sum>=100){
    	break;
    }
    num++;
}

//풀이방법2
int sum = 0;
int num = 4;
while(sum < 100){
	num++;
    sum += num;
}

while 구구단

//1. 2단 출력
int num = 1;
while(num < 10){
	System.out.println(2 + "*" + num + "=" + 2*num);
	num++;
}

//2. 2단~9단 전체 출력
int dan = 2;
int num = 1;
while(dan < 10){
	while(num < 10){
    	System.out.println(dan + "*" + num + "=" + dan*num);
        num++;
    }
    dan++;
}

do-while loop

  • while문의 변형으로 기본구조는 while문과 비슷하다.
  • 하지만 최소1회는 블럭{}을 수행하게 된다.
do{
	수행될 문장 //처음 한번은 조건에 상관없이 실행
}while(조건식);

do-while 예시

//사용자로부터 입력받은 문자열을 출력하는 프로그램
//단, 사용자가 "exit"를 입력할 때까지는 무한 반복.

String input = null;
do{
	System.out.println("문자열을 입력해주세요");
    input = sc.next();
    System.out.println(input);
}while(!"exit".equals(input));
//무조건 있어야 하는 것이 equals 앞에 붙어야함
//null은 equals 앞에 올 수 없음

스캐너

  • 사용자로부터 값 입력받기
import java.util.Scanner;

public class Sentence_03{
	public static voide main(String[] args){
    
	Scanner scan = new Scanner(System.in);
	System.out.println("문자열을 입력해주세요");
    String input = sc.next(); // next(): 띄어쓰기, 엔터기준 nextl(): 엔터만 기준
    System.out.println(input);
    
    System.out.println("숫자를 입력해주세요");
    int input = sc.nextInt(); // 숫자말고 딴거치면 프로그램 터짐
    System.out.println("입력하신 숫자는 "+input+"입니다.") // 숫자 자체로 인식    
	}
}

스캐너 예시

//1. 입력받은 두 숫자 사이의 합
System.out.println("첫번째 숫자를 입력해주세요");
int input1 = sc.nextInt();

System.out.println("두번째 숫자를 입력해주세요");
int input2 = sc.nextInt();

//input 1 < input2일때
if(input1<input2){
	for(int num = input1;num < (input2+1); num++){
		sum += num;
    }
}else if(input1==input2){
	?
}else{
	for(int num = input2;num < (input1+1); num++){
    	sum += num;
    }
}
System.out.println("두 숫자 사이의 합은 "+sum+"입니다.");

계산기 만들기 (스캐너 + do-while)

//사용자로부터 숫자, 연산자, 숫자를 받아야 계산가능
//단, 사용자가 입력한 부호가 사칙연산자가 아니면 종료
do{
    System.out.println("첫번째 숫자를 입력하세요");
    int firNum = sc.nextInt();
    System.out.println("사칙연산을 입력하세요");
	String buho = sc.next();
    System.out.println("두번째 숫자를 입력하세요");
    int secNum = sc.nextInt();
    
    if("+".equals(buho)){
    	System.out.println(firNum+secNum);
    }
    else if("-".equals(buho)){
    	System.out.println(firNum-secNum);
    }
    else if("*".equals(buho)){
    	System.out.println(firNum*secNum);
    }
    else if("/".equals(buho)){
    	System.out.println((int)((float)firNum/secNum*100+0.5)/100f);
    }else{
    	System.out.println("사칙연산 아님. 종료.");
        break;
    }
}while(true);
profile
갈 길이 멀다

0개의 댓글