학습목표
Q1) 점수를 입력받아 max 값, 과목 수, 평균값을 출력하는 프로그램을 작성하시오.
(단, 과목수는 모름, 점수 입력시 -1이 들어오면 EOF(end of file)를 의미한다.)
입력값
점수 : 100 점수 : 78 점수 : 96 점수 : -1
학습할 것
while, 최대값 구하기, switch 기법
Q) 1+2+3+...+100을 구하는 프로그램을 작성하시오.
while 문법의 사용법
while (조건식) { 조건식이 false가 될 때까지 반복수행될 문장 }
if 와 비슷하지만 다른점이 조건식이 false가 될 때까지 블럭 { } 안의 문장들을 반복해서 수행한다는 점이다.
조건이 false가 되지 않는다면 무한히 블럭 { } 안을 맴돌게 된다.
이 때 while 문장에서 빠져나가려면 break; 를 쓰거나, 조건식을 false로 만드는 switch기법을 사용할 수 있다.
while { } 블럭 안에서 while문에 영향을 주는 break; 와 continue; 가 있다
break; 를 만나게 되면 while은 더 이상 반복되지 않고 빠져나간다.
continue;를 만나게 되면 while의 첫부분, 조건식부터 돌아가서 다시 실행하게 된다.
switch 기법을 사용해서 while 반복문을 빠져나갈 수 있다.
int sw = 0;
while ( sw == 0 ) { 반복 }
위 코드에서 sw == 0, 즉 참이므로 계속 돌게되는데
돌다가 어느순간 sw의 값을 1로 바꾸면 조건식이 false가 되므로 반복이 더 이상 실행되지 않는다.
package JavaWhile;
public class JavaWhile {
public static void main(String[] args) {
int jungsu = 1; // 1씩 올라가는 수
int sw = 0; // switch기법
int dab = 0; // 정답
while(sw == 0) {
if(jungsu >= 100) {
sw = 1;
}
dab = dab + jungsu;
jungsu = jungsu + 1;
}
System.out.println(dab);
}
}
최대값 구할 때는 최대값을 비교할 값 중 하나와 같은 값의 변수를 두고
비교할 다른 값을 비교하면서 구할 수 있다.
int jumsu1 = 85; // 비교할 값1
int max = jumsu1; // 최대값을 구하는 변수
if ( max < jumsu2 ) { max = jumsu2; } // 점수2가 더 크다면 max 값은 바뀐다.
이를 이용하여 Q1을 구하는 프로그램을 작성할 수 있다.
package JavaWhile;
import java.util.Scanner;
public class Q1 {
public static void main(String[] args) {
int class_count = 0;
int total = 0;
int sw = 0;
System.out.print("점수 : ");
Scanner sc = new Scanner(System.in);
int jumsu = sc.nextInt();
int max = jumsu;
double avg;
while(sw == 0) {
if (jumsu == -1) {
sw = 1; continue;
}
class_count++;
total += jumsu;
if(max < jumsu) {
max = jumsu;
}
System.out.print("점수 : ");
jumsu = sc.nextInt();
}
System.out.println("점수 max 값은 " + max);
System.out.println("과목 수는 " + class_count);
System.out.println("평균 값은 " + total/(class_count*1.0));
}
}
'Java' 카테고리의 다른 글
JAVA FOR 기본문법 (0) | 2020.11.26 |
---|---|
JAVA IF 기본문법 (0) | 2020.11.24 |