✿∘˚˳°∘°
5일차 : 제어문 본문
2022/12/02
1. 조건문
: 조건에 따라서 수행되는 코드가 달라지는 구문
: 조건문의 종류 - if / if ~ else / if ~ else if / switch
1 - 1 ) if
: 조건식의 결과값이 true면 { } 안의 내용을 실행하고 false면 실행하지 않는 구문
//if문 기본
public void test1() {
Scanner sc = new Scanner(System.in);
//ctrl+shift+o : 자동임포트(단,다른클래스에서 사용하고 있을 경우 패키지클래스확인)
System.out.print("숫자 10을 입력해보세요 : ");
int num = sc.nextInt();
System.out.println("입력한 숫자 : "+num);
if(num == 10) {
System.out.println("잘했어요~!");
}
System.out.println("끝");
}
//if문 여러개
public void exam1() {
Scanner sc = new Scanner(System.in);
System.out.println("====== 숫자 구별 프로그램 =======");
System.out.print("임의의 정수를 입력하세요 : ");
int num = sc.nextInt();
if(num>0) {
System.out.println("당신이 입력한 수 [ "+num+" ]은(는) 양수입니다.");
}
if(num==0) {
System.out.println("당신이 입력한 수 [ "+num+" ]은(는) 0입니다.");
}
if(num<0) {
System.out.println("당신이 입력한 수 [ "+num+" ]은(는) 음수입니다.");
}
}
//if문을 이용하여 두수 비교하는 프로그램 만들기
public void exam2() {
Scanner sc = new Scanner(System.in);
System.out.println("====== 두수 비교 프로그램 =======");
System.out.print("첫번째 정수를 입력하세요 : ");
int num1 = sc.nextInt();
System.out.print("두번째 정수를 입력하세요 : ");
int num2 = sc.nextInt();
if(num1<num2) {
System.out.println(num1+"<"+num2);
System.out.println("두번째 수가 더 큽니다.");
}
if(num1==num2) {
System.out.println(num1+"="+num2);
System.out.println("두 수가 같습니다.");
}
if(num1>num2) {
System.out.println(num1+">"+num2);
System.out.println("첫번째 수가 더 큽니다.");
}
}
//연산자와 정수를 입력받아 연산하는 계산기 프로그램(연산자-문자)
public void exam3() {
Scanner sc = new Scanner(System.in);
System.out.println("====== 계산기 프로그램 ======");
System.out.print("연산자를 입력하세요(+,-,*/) : ");
char op = sc.next().charAt(0);
System.out.print("첫번째 정수를 입력하세요 : ");
int num1 = sc.nextInt();
System.out.print("두번째 정수를 입력하세요 : ");
int num2 = sc.nextInt();
/*'1'+'1'=98*/
if(op == '+') {//op==43(아스키코드)
//System.out.println(num1+op+num2+"="+(num1+num2));
//문자 op가 정수형으로 형변환이 되어 계산이 되어버림(아스키코드+정수)
//
System.out.println(num1+"+"+num2+"="+(num1+num2));
/* System.out.println(num1+""+op+""+num2+"="+(num1+num2));
System.out.printf("%d %c %d = %d", num1, op, num2, num1+num2); */
}
if(op == '-') {//op==45
System.out.println(num1+"-"+num2+"="+(num1-num2));
}
if(op == '*') {//op==42
System.out.println(num1+"*"+num2+"="+(num1*num2));
}
if(op == '/') {//op==47
System.out.printf("%d %c %d = %.6f", num1, op, num2, (double)num1/num2);
}
}
//연산자와 정수를 입력받아 연산하는 계산기 프로그램(연산자-문자열)
public void exam33() {
Scanner sc = new Scanner(System.in);
//연산자를 문자열로 받기
System.out.println("====== 계산기 프로그램 ======");
System.out.print("연산자 입력(+,-,*,/) : ");
String oper = sc.next();
System.out.print("첫번째 정수 입력 : ");
int num1 = sc.nextInt();
System.out.print("두번째 정수 입력 : ");
int num2 = sc.nextInt();
//참조변수는 내부에 주소값을 가지고있고 그 주소값이
if(oper.equals("+")) { //.equals를 통해 주소가 아닌 내부데이터를 비교 "+".equals(oper)
//oper == "+" :실행x 참조형 변수는 직접비교x 내부의 데이터를 비교해야한다.
System.out.println(num1+oper+num2+"="+(num1+num2));
//exam3(){}의 op는 문자타입이었기 때문에 중간에 문자열("")을 넣거나 printf를 사용해야햇지만
//exam33(){}의 oper는 이미 문자열타입이기 때문에 그냥 사용해도 문자열연산이 된다.
}
if(oper.equals("-")) {
System.out.println(num1+oper+num2+"="+(num1-num2));
}
if(oper.equals("*")) {
System.out.println(num1+oper+num2+"="+(num1*num2));
}
if("/".equals(oper)) {
System.out.println(num1+oper+num2+"="+((double)num1/num2));
}
System.out.println("끝!");
}
1 - 2 ) if ~ else
//홀수 짝수 구분프로그램
public void test2() {
//입력받은 수가 홀수면 홀수! 출력, 짝수면 짝수! if문 사용
//짝수 : 2로 나눴을 때 나누어 떨어지는 수, 2로 나눈 나머지가 0
//if~else : 경의 수가 두가지인 경우 사용
//if(조건식) 조건식을 체크하고 true일경우 if문을 실행하고 false일경우 바로 else를 실행
//if문을 계속쓰면 계속 검사를 한다(검사를 n번하냐 한번하냐의 차이)
Scanner sc = new Scanner(System.in);
System.out.print("정수를 입력하세요 : ");
int num = sc.nextInt();
if(num%2 == 0) {
System.out.println("짝수!");
} else {
System.out.println("홀수!");
}
}
1 - 3 ) if~ else if
//if~else if문
public void test3() {
Scanner sc = new Scanner(System.in);
System.out.print("정수를 입력하세요 : ");
int num = sc.nextInt();
//상위if의 조건식이 true면 다른조건식을 검사하지않고 끝이난다.
//조건식을 모두 검사하고 싶을경우엔 if문만 계속사용해야함.
//조건검사를 할 때 범위가 좁은걸 상위로 올려주어야한다.
if(num > 1000) { //num>10이 상위로 오면 2000을 입력해도 10이상만 출력하고 나머지검사x
System.out.println("1000보다 큰 수 입니다.");
}else if(num > 100) {
System.out.println("100보다 큰 수 입니다.");
}else if(num > 10) {
System.out.println("10보다 큰 수 입니다.");
}else {
System.out.println("10 이하입니다.");
}
}
1 - 4 ) 조건문 실습
//입장인원이 맞으면 금액계산, 틀리면 인원이 맞지 않습니다 출력
public void exam4() {
Scanner sc = new Scanner(System.in);
int adultPay = 15000; //금액을 변수로 만들어놓으면 나중에 수정이 용이하기 때문에
int kidPay = 5000; // 변동(할인, 인상 등)가능성이 있는 요소는 변수로 선언하는편이 좋다.
System.out.println("======= 놀이공원 프로그램 =======");
System.out.print("입장하실 총 인원은 몇명입니까? : ");
int total = sc.nextInt();
System.out.print("어른은 몇명입니까?(1인당 15,000원) : ");
int adult = sc.nextInt();
System.out.print("아이는 몇명입니까?(1인당 5,000원) : ");
int kid = sc.nextInt();
if( total == adult+kid ) {
System.out.println("지불하실 금액은 "+((adult*adultPay)+(kid*kidPay))+"원 입니다.");
}else {
System.out.println("인원수가 맞지 않습니다.");
}
}
//대소문자 변환 / 잘못입력한 경우 영문자 입력메세지 출력
public void exam5() {
Scanner sc = new Scanner(System.in);
System.out.println("======= 대/소문자 변환 프로그램 =======");
System.out.print("문자 입력 : ");
char ch = sc.next().charAt(0);
//대문자 범위 65 ~ 90 -> 65 <= ch <= 90
//소문자 범위 97 ~ 122 -> 97 <= ch <= 122
//1 <= ch(50) <= 99(x) 컴퓨터는 앞연산을 먼저 하므로 true <= 99가 된다
//ch >= 1 && ch <= 99(o) 논리연산자를 사용해주어야함.
System.out.println("====== 결과 ======");
if( ch >= 'a' && ch <= 'z' ) {//연산시 정수로 변환되므로 숫자가아닌 'a'로 적어도 된다.
System.out.println("소문자를 입력 하였습니다.");
System.out.println("대문자로 변환 : "+(char)(ch^32));
//문자^정수로 연산하면 정수로 변환되기때문에 형변환을 해줘야함
}else if(ch >= 'A' && ch <= 'Z') {
System.out.println("대문자를 입력 하였습니다.");
System.out.println("소문자로 변환 : "+(char)(ch^32));
}else{
System.out.println("잘못입력하였습니다. 영문자를 입력해주세요.");
}
}
//정수를 입력하여 3의배수/4의배수인지 확인하는 프로그램
public void exam6() {
Scanner sc = new Scanner(System.in);
System.out.print("정수 입력 : ");
int num = sc.nextInt();
System.out.println("======= 결과 =======");
if( num != 0 ) {
if(num%3 == 0 && num%4 == 0) {
System.out.println("["+num+"]은(는) 3의 배수이면서 4의 배수입니다.");
}else if(num%3 == 0) {
System.out.println("["+num+"]은(는) 3의 배수입니다.");
}else if(num%4 == 0) {
System.out.println("["+num+"]은(는) 4의 배수입니다.");
}else {
System.out.println("["+num+"]은(는) 3의 배수도 4의 배수도 아닙니다.");
}
}
else System.out.println("["+num+"]은(는) 3의 배수도 4의 배수도 아닙니다.");
}
1 - 5 ) switch
//switch~case문
public void test1() {
Scanner sc = new Scanner(System.in);
System.out.print("1~3 사이 정수를 입력하세요 : ");
int num = sc.nextInt();
/* if(num == 1) { 범위값이없다 -> 순서상관x
System.out.println("1입력!");
}else if(num == 2) {
System.out.println("2입력!");
}else if(num == 3) {
System.out.println("3입력!");
}else {
System.out.println("잘못입력!");
} */
//위 코드를 switch문으로 바꾸기
switch(num) {
case 1 :
System.out.println("1입력!");
break;//break가 없으면 true이후의 case문도 실행된다.(break를 만날때까지 실행)
case 2 :
System.out.println("2입력@");
break;
case 3 :
System.out.println("3입력#");
break;
default :
System.out.println("잘못입력!");
}
}
//월을 입력하면 일수를 출력해주는 프로그램(switch~case)
public void test2() {
Scanner sc = new Scanner(System.in);
System.out.print("일수를 알고싶은 월을 입력하세요 : ");
int month = sc.nextInt();
switch(month) { //순서상관x
case 1 : case 3 : case 5 : case 7 :
case 8 : case 10 : case 12 :
System.out.println("31일");
break; //break를 만나야 실행이 종료된다는 특성을 이용하여 이렇게 사용가능.
case 4 : //순서는 상관없음
System.out.println("30일");
break;
case 6 :
System.out.println("30일");
break;
case 9 :
System.out.println("30일");
break;
case 11 :
System.out.println("30일");
break;
case 2 :
System.out.println("28일");
break;
default : //else처럼 안적어도 된다
System.out.println("잘못입력하셨습니다!");
}
}
//switch~case문
public void test3() {
Scanner sc = new Scanner(System.in);
System.out.println("문자열 입력 : ");
String str = sc.next();
/*
if(str.equals("a")) { //str == "a"를 입력하면 마지막 cccc가 출력된다
System.out.println("aaaa");
}else if(str.equals("b")){
System.out.println("bbbb");
}else {
System.out.println("cccc");
}
*/
//switch로 문자열을 처리하는 기능은 자바1.7에 추가된 기능, 자바하위버전에서 구동 시 에러
switch(str) {
case "a" :
System.out.println("aaaa");
break;
case "b" :
System.out.println("bbbb");
break;
default :
System.out.println("cccc");
break;
}
}
2. 반복문
: 사용자가 원하는 만큼 명령들을 여러 번 반복해서 실행하는 구문
: 반복문의 종류 - for / while / do ~ while
2 - 1 ) for
가장 보편적인 반복문으로 가독성이 높고, 초기, 조건, 증감문을 한번에 선언해서 사용
for문 표현식 - for(초기문;조건문;증감문){ 실행문; }
//for문 기본
public void test1() {
//for(초기;조건;증감)
/*
초기 : 반복횟수를 위한 변수 선언 및 초기화
조건 : 반복횟수 조절
증감 : 초기에서 선언된 변수를 증가 또는 감소
*/
//System.out.println("안녕하세요"); 5번출력
for(int i=0; i<3; i++) {
System.out.println(i+" : 안녕하세요");
}
/* [ for문 실행순서 ]
1. int i선언 / i = 0대입
2. i < 5 / true : 실행
3. i++
4. i = 1대입
5. i < 5 / true : 실행
(반복)
n. i = 5
m. i < 5 / false : 반복문에서 나감 */
}
//정수를 입력받아 그 수 만큼 출력하는 프로그램
public void test2() {
Scanner sc = new Scanner(System.in);
System.out.print("몇번 출력하시겠습니까 ? ");
int count = sc.nextInt();
for(int i=0; i<count; i++) {
System.out.println("안녕하세요");
}
}
//구구단 2단
public void test3() {
//구구단 2단 출력;
for(int i=1; i<10; i++) {
System.out.println("2*"+i+"="+(2*i));
//System.out.printg("%d X %d = %d \n", 2, i, 2*i);
}
}
//입력받은 단 출력
public void test4() {
Scanner sc = new Scanner(System.in);
System.out.print("몇단을 출력하시겠습니까? ");
int dan = sc.nextInt();
System.out.println(dan+"단 입니다.");
for(int i=0; i<9; i++) {
System.out.printf("%d X %d = %d \n", dan, i+1, dan*(i+1));
}
}
//반복문으로 5번 반복하여 입력받아 그합을 출력하는 프로그램(방법1)
public void test5() {
Scanner sc = new Scanner(System.in);
int total = 0;//선언만 하면 안에 쓰레기가 들어있기때문에 0으로 초기화해줘야한다.
for(int i=0; i<5; i++) {
System.out.print("정수 값을 입력하시오 : ");
int num = sc.nextInt();
//동일한 변수를 5번 선언했을 때는 에러가 발생하는데, 반복문에서는 에러가 발생하지 않는이유
//생성한 변수는 그 변수를 감싸고있는 가장 가까운 중괄호 범위까지만
//num이라는 변수는 for문이내에서 선언되었으므로 for문안에서만 사용가능한 것
//그렇기 때문에 for문 밖에서 사용하려면 사용x
total += num;//total = total + num;
}
System.out.println("입력한 5개 정수의 합 : "+total);
}
//반복문으로 5번 반복하여 입력받아 그합을 출력하는 프로그램(방법2)
public void test55() {
Scanner sc = new Scanner(System.in);
int num = 1000;//for문이 실행될 때 입력을 받으면 변경되므로 값을 넣어 초기화해도 된다.
for(int i=0; i<5; i++) {
System.out.print("정수 값을 입력하시오 : ");
num += sc.nextInt();
}
System.out.println("입력한 5개 정수의 합 : "+num);
}
//정수 두개를 입력받고 두 수사이의 모든 수의 합을 구하는 프로그램(무조건 첫번째 수가 더 작은경우에만 가능)
public void test6() {
Scanner sc = new Scanner(System.in);
System.out.print("첫번째 수 입력 : ");
int num1 = sc.nextInt();
System.out.print("두번째 수 입력 : ");
int num2 = sc.nextInt();
int total = 0;
for(int i=num1; i<num2+1; i++) {
total += i;
}
System.out.printf("%d ~ %d의 정수의 합 : %d", num1, num2, total);
}
//정수 두개를 입력받고 두 수사이의 모든 수의 합을 구하는 프로그램(if문)
public void test66() {
//첫번째 정수가 더크면? if~else if문?
Scanner sc = new Scanner(System.in);
System.out.print("첫번째 수 입력 : ");
int num1 = sc.nextInt();
System.out.print("두번째 수 입력 : ");
int num2 = sc.nextInt();
int total = 0;
if(num1<num2) {
for(int i=num1; i<num2+1; i++) {
total += i;
}
}else if(num1>num2){
for(int i=num2; i<num1+1; i++) {
total += i;
}
}
System.out.printf("%d ~ %d의 정수의 합 : %d", num1, num2, total);
}
//수를 입력받고 1부터 입력받은 수 중 짝수들의 합을 수하는 프로그램
public void test7() {
Scanner sc = new Scanner(System.in);
System.out.print("숫자 입력 : ");
int num = sc.nextInt();
//만약 입력한 숫자가 100이라면
//2,4,6,8,10...,100 숫자를 모두 더한 결과
int total = 0;
/*
for(int i = 0; i<num+1; i++){
total += i;
i++; //i를2씩증가시켜 짝수만 구동되게 하는 것
} for문 내부에 i++;코드를 추가하여 i를2씩증가시켜 짝수만 구동되게 하는 것
*/
/*
for(int i = 0; i<num+1; i=i+2){
total += i;
} 증감식을 변형시켜 짝수만 구동되게 하는 것
*/
for(int i=0; i<num+1; i++) {
if(i%2==0) {
total += i;
}
}
System.out.print("짝수들의 합은 : "+total);
}
- 중첩 for문 실습문제
//중첩for문을 이용한 구구단 전체 출력(가로)
public void gugudan1() {
for(int i=2; i<10; i++){
for(int j=0; j<9; j++) {
System.out.printf("%d X %d = %d\t", i, j+1, i*(j+1));
}
System.out.println();
}
}
//중첩for문을 이용한 구구단 전체 출력(세로)
public void gugudan2() {
for(int i=0; i<9; i++){//세로
for(int j=2; j<10; j++) {//가로
System.out.printf("%d X %d = %d\t", j, i+1, j*(i+1));
}
System.out.println();
}
}
/*
System.out.print(" "); /)/) (\(\
System.out.print("*"); (.. ) ( ..)
System.out.println(); (____)3 c(____)
를 이용해서 별 찍기
*/
public void star1() {
System.out.println("Q1.");
for(int i=0; i<5; i++) {
System.out.print("*");
}
}
public void star2() {
System.out.println("Q2.");
for(int i=0; i<5; i++){
System.out.print("*");
System.out.println();
}
}
public void star3() {
System.out.println("Q3.");
for(int j=0; j<5; j++) {
for(int i=0; i<5; i++){
System.out.print("*");
}
System.out.println();
}
}
public void star4() {
System.out.println("Q4.");
for(int i=0;i<5;i++) {
for(int j=0;j<5;j++) {
System.out.print(i+1);
}
System.out.println();
}
}
public void star5() {
System.out.println("Q5.");
for(int i=0; i<5; i++) {
for(int j=0; j<5; j++) {
System.out.print(j+1);
}
System.out.println();
}
}
public void star6() {
System.out.println("Q6.");
for(int i=0; i<5; i++) {
for(int j=0; j<5; j++) {
System.out.print(j+i+1);//0+0+1 0+1+1 0+2+1 ...0+4+1
} //1+0+1 1+1+1 1+2+1 ...1+4+1
System.out.println();
}
}
public void star7() {
System.out.println("Q7.");
for(int i=5; i>0; i--) {
for(int j=0; j<5; j++) {
System.out.print(j+i);
}
System.out.println();
}
/*
for(int i=0; i<0; i++) {
for(int j=0; j>5; j++) {
System.out.print(j+5-i); //j+1+(4-i)
}
System.out.println();
}
*/
}
public void star8() {
System.out.println("Q8.");
for(int i=0; i<5; i++) {
for(int j=0; j<i+1; j++) {
System.out.print("*");
}
System.out.println();
}
}
public void star9() {
System.out.println("Q9.");
for(int i=5; i>0; i--) {
for(int j=0; j<i; j++) {
System.out.print("*");
}
System.out.println();
}
/*
for(int i=0; i<5; i++) {
for(int j=0; j<5-i; j++) {
System.out.print("*");
}
System.out.println();
}
*/
}
public void star10() {
System.out.println("Q10.");
for(int i=0; i<5; i++) {
for(int j=0; j<i; j++) {//공백출력for문
System.out.print(" ");
}
for(int j=0; j<5-i;j++) {//*출력for문
System.out.print("*");//i=5 0~4출력 i=4 0~3출력
}
System.out.println();
}
}
public void star11() {
// 들여쓰기정렬 : Ctrl+Shift+f
System.out.println("Q11.");
for (int i=0; i<5; i++) {
// i=5일때 공백이 4개출력
for (int j=0; j<4-i; j++) {
System.out.print(" ");
}
// i=5일때 *이 1개출력
for (int j=0; j<i+1; j++) {
System.out.print("*");
}
System.out.println();
}
}
public void star12() {
System.out.println("Q12.");
for(int i=0; i<10; i++) {
//3항 연산자
for(int j=0; (i<5)?j<i:j<10-i; j++) {
System.out.print("*");
}
/* if
if(i<5) {
for(int j=0; j<i; j++) {
System.out.print("*");
}
}else {//i가 5이상일경우 별감소 실행
for(int j=0; j<10-i; j++) { //for(int j=5; j>i-5; j--){}
System.out.print("*");
}
}
*/
System.out.println();
}
}
public void star13() {
System.out.println("Q13.");
for(int i=0; i<9; i++) {
for(int j=0; i<5?j<5-i:j<i-3; j++) {
System.out.print("*");
}
/*
if(i<5) {//감소식
for(int j=0; j<5-i; j++) {
System.out.print("*");
}
}else {//증감식
for(int j=0; j<i-3; j++) {
System.out.print("*");
}
}
*/
System.out.println();
}
}
public void star16() {
System.out.println("Q16.");
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("*");
}
for(int j=0; j<4-i; j++) {//뒷공백
System.out.print(" ");
}
System.out.println();
}
}
public void star17() {
System.out.println("Q17.");
for(int i=0; i<5; i++) {
for(int j=0; j<i; j++) {//앞공백
System.out.print(" ");
}
for(int j=0; j<9-i*2; j++) {//별
System.out.print("*");
}
for(int j=0; j<i;j++) {//뒷공백
System.out.print(" ");
}
System.out.println();
}
}
public void star18() {
System.out.println("Q18.");
for(int i=0; i<9; i++) {
if(i<5) {//삼각형
for(int j=0; j<4-i; j++) {
System.out.print(" ");
}
for(int j=0; j<(i*2)+1; j++) {
System.out.print("*");
}
for(int j=0; j<4-i; j++) {
System.out.print(" ");
}
} else {//역삼각형 i>=5
for(int j=0; j<i-4; j++) {
System.out.print(" ");
}
//i=5 일때 7번출력12-5 i=6일때 5번출력11-6 i=7일때 3번출력10-7 i=8일때 1번출력9-8
for(int j=9; j>2*(i-4); j--) {// int j=0; j<()-i; j++
System.out.print("*");
}
for(int j=0; j<i-4; j++) {
System.out.print(" ");
}
}
System.out.println();
}
}
public void star19() {
System.out.println("Q19.");
for(int i=0; i<9; i++) {
if(i<5) {
for(int j=0; j<5-i; j++) {//앞*출력문
System.out.print("*");
}
for(int j=0; j<(2*i)+1; j++) { //공백출력문
System.out.print(" ");
}
for(int j=0; j<5-i; j++) {//뒷*출력문
System.out.print("*");
}
} else {
for(int j=0; j<i-3; j++) {
System.out.print("*");
}
for(int j=9; j>2*(i-4); j--) {
System.out.print(" ");
}
for(int j=0; j<i-3; j++) {
System.out.print("*");
}
}
System.out.println();
}
}
public void star20() {
System.out.println("Q20.");
for(int i=0; i<9; i++) {
if(i<5) {
for(int j=0; j<i+1; j++) {//앞*
System.out.print("*");
}
for(int j=10; j>(2*i)+1; j--) {//공백출력
System.out.print(" ");
}
for(int j=0; j<i+1; j++) {//뒷*
System.out.print("*");
}
}else {
for(int j=0; j<9-i;j++) {//앞*
System.out.print("*");
}
//i=5 j3번 / i=6 j5번/ i=7 j7번/ i=8 j9번
for(int j=8; j<(2*i)+1; j++) {//공백
System.out.print(" ");
}
for(int j=0; j<9-i; j++) {//뒷*
System.out.print("*");
}
}
System.out.println();
}
}
public void star21() {
System.out.println("Q21.");
for(int i=0; i<9; i++) {
if(i<5) {
for(int j=0; j<i+1; j++) {//앞공백
System.out.print(" ");
}
for(int j=10; j>(2*i)+1; j--) {//*
System.out.print("*");
}
for(int j=0;j<i+1;j++) {//뒷공백
System.out.print(" ");
}
} else { //i=5 j4 i=6 j3
for(int j=0;j<9-i;j++) {
System.out.print(" ");
}
for(int j=8; j<(2*i)+1;j++) {
System.out.print("*");
}
for(int j=0;j<9-i;j++) {
System.out.print(" ");
}
}
System.out.println();
}
}
2 - 2 ) while
특정 조건이 만족되는 동안 명령을 계속해서 반복적으로 수행함
for문과 다르게 초기식을 미리 작성하고, 증감문도 실행코드 내부에 직접 작성해야 함
while문 표현식 - while(조건문) { 실행문; }
//안녕하세요를 5번 출력(while)
public void test1() {
/*
for(int i=0; i<5; i++) {
System.out.println("안녕하세요");
}
*/
//초기값 wihle(조건식){실행문, 증감문}
int i = 0;//초기값
while(i<5) {//조건식
System.out.println(i+" : 안녕하세요");
i++;
//증감문 위치에 따라 사용하는 방식이 다르게 적용된다
//실행문 상단에 작성하면 실행문에서 i출력시 1부터 가능
}
}
//while문을 이용해서 안녕하세요를 입력받은 횟수만큼 출력
public void test3() {
Scanner sc = new Scanner(System.in);
System.out.print("반복횟수 입력 : ");
int count = sc.nextInt();
int i = 0;
while(i<count) {
System.out.println("안녕하세요!");
i++;
}
}
//구구단 2단출력하기
public void test4() {
int dan = 2;
System.out.println(dan+"단 입니다.");
int i = 0;
while(i<9) {
i++;
System.out.printf("%d * %d = %d \n",dan, i, dan*i);
}
}
//몇단을 출력할 지 입력받은 후 해당 구구단 출력
public void test5() {
Scanner sc = new Scanner(System.in);
System.out.print("몇단을 출력하시게습니까?");
int dan = sc.nextInt();
int i = 0;
while(i<9) {
i++;
System.out.printf("%d * %d = %d \n", dan, i, dan*i);
}
}
//반복문으로 5번 반복하여 입력받아 그 합을 출력하는 프로그램
public void test6() {
Scanner sc = new Scanner(System.in);
int i = 0;
int total = 0;
while(i<5) {
System.out.print("정수 값을 입력하시오 : ");
int num = sc.nextInt();
total +=num;
i++;
}
System.out.print("입력한 5개의 정수의 합 : "+total);
}
//정수 두개를 입력받고 두 수사이의 모든 수의 합을 구하는 프로그램
public void test7() {
Scanner sc = new Scanner(System.in);
System.out.print("첫번째 수 입력 : ");
int num1 = sc.nextInt();
System.out.print("두번째 수 입력 : ");
int num2 = sc.nextInt();
int i = num1;
int total = 0;
while(i<num2+1) {
total += i;
i++;
}
System.out.printf("%d ~ %d의 정수의 합 : %d",num1, num2, total);
}
//수를 입력받고 1부터 입력받은 수 중 짝수들의 합을 구하는 프로그램
public void test8() {
Scanner sc = new Scanner(System.in);
System.out.print("숫자 입력 : ");
int num = sc.nextInt();
int i = 0;
int total = 0;
while(i<num+1) {
total += i;
i=i+2;
}
System.out.println("짝수들의 합은 : "+total);
}
2 - 3 ) do ~ while
while문과 유사하지만 조건문이 뒤에 위치하기 때문에 조건문에 맞지 않더라도 1번은 무조건 실행
do ~ while문 표현식 - do{ 실행문; }while(조건문);
//안녕하세요 5번 출력(do~while)
public void test2() {
//코드는 항상 위에서 아래방향으로
// [ do~while / while 차이 ]
//do~while문은 조건식검사를 아래에서 하기때문에 무조건 한번은 실행한다.
//while은 위에서 조건식 검사를 하기때문에 false값이면 실행자체가 X
int i = 0;
do {
i++;
System.out.println(i+" : 안녕하세요");
}while(i<5);
}
'국비수업 > JAVA' 카테고리의 다른 글
7일차 : Random, 배열 (0) | 2022.12.07 |
---|---|
6일차 : Break, Continue, Random (0) | 2022.12.06 |
4일차 : Operator (0) | 2022.12.06 |
3일차 : Scanner, 연산자 (0) | 2022.12.06 |
2일차 : 기본코드, 숫자와 문자, 변수 (0) | 2022.12.06 |
Comments