일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 백준 #백준알고리즘 #백준 Hello World #Hello World
- 백준구구단
- cs지식
- 자바수업
- 화이자접종후기
- 스터디
- 백준10171
- 화이자미열
- java
- 2739자바
- 포장방스터디
- 자바조건문
- 화이자1일차
- 자바토글버튼
- 백준고양이자바
- 백준고양이
- 컴퓨터공부
- 1일1로그
- 자바이벤트
- 자바컨테이너
- 코로나백신
- 자바공부
- 자바
- 자바화면구현
- 화이자백신후기
- 자바컴포넌트
- GUI
- 백준자바 #백준10718
- 백준2739
- 백준10718자바
- Today
- Total
Salted Caramel
[수업 4일차] 2021.08.05/ Scanner, 반복문(for,while,...),숫자맞추기게임 본문
[수업 4일차] 2021.08.05/ Scanner, 반복문(for,while,...),숫자맞추기게임
꽃무늬라떼 2021. 8. 5. 17:11Ex16
Scanner 클래스
- 읽은 바이트를 문자, 정수, 실수, 불린, 문자열 등 다양한 타입으로 변환하여 리턴하는 클래스
- Scanner : nextint() ,nextByte(), nextshort(), nextBoolean(), nextDouble(), nextFloat(), nextLong()
- next() //문자열을 받는 메서드
- 문자뿐만 아니라 정수, 실수 등 다양한 자료형을 읽을 수 있다.
*System.in
-키보드와 연결된 자바의 표준 입력 스트림이다.
-자동완성: sca + ctrl + spacebar( java.util 패키지의 Scanner 클래스를 호출 할 수 있다.)
- 04_Control-Ex16
package sist;
import java.util.Scanner;
public class Ex16 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("달(월)을 입력하세요. : ");
int month =sc.nextInt();
switch (month){
case 1 :
case 3 :
case 5 :
case 7 :
case 8 :
case 10 :
case 12 :
System.out.println("마지막날은 31일 입니다.~~~");
break;
case 2 :
System.out.println("마지막 날은 28일 입니다.~~~");
break;
case 4 :
case 6 :
case 9 :
case 11 :
System.out.println("마지막 날은 30일 입니다.~~~");
break;
}
sc.close();
}
}
- 04_Control-Ex17
int menu = sc.nextInt(); 로 숫자값이 들어간 경우

다중 if~else
switch~case문
package sist;
import java.util.Scanner;
public class Ex17 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("*** 메뉴를 선택하세요. ***");
System.out.println("1. Pizza");
System.out.println("2. 돈까스");
System.out.println("3. 제육볶음");
System.out.println("4. 김치찌개");
System.out.println("5. 짜장면");
System.out.println("위 메뉴 증 하나를 선택하세요. :");
int menu = sc.nextInt();
//다중 if~else 문으로 구현한 코드
if(menu == 1) {
System.out.println("Pizza 선택");
}else if(menu == 2) {
System.out.println("돈까스 선택");
}else if(menu == 3) {
System.out.println("제육볶음 선택");
}else if(menu == 4) {
System.out.println("김치찌개 선택");
}else if(menu == 5) {
System.out.println("짜장면 선택");
}else {
System.out.println("없는 메뉴입니다.~~~");
}
//switch~case 문으로 구현한 코드
switch (menu) {
case 1:
System.out.println("Pizza 선택");
break;
case 2:
System.out.println("돈까스 선택");
break;
case 3:
System.out.println("제육볶음 선택");
break;
case 4:
System.out.println("김치찌개 선택");
break;
case 5:
System.out.println("짜장면 선택");
break;
case 6:
System.out.println("없는 메뉴입니다.~~~");
break;
}
sc.close();
}
}

error
Resource leak: 'sc' is never closed
==> sc.close(); 을 switch문 } 뒤에 입력해줘야한다
- 04_Control-Ex18
if(postion = "사장") //(x) 문자 == 문자/ 숫자 = 숫자는 맞지만
* 비교처리
* 1. 숫자와 숫자 간의 비교( == )
* 2. 문자와 문자 간의 비교( equals( ) )
프로젝트를 하게 되면 간혹 실수를 하는 때문에 주의하기

package sist;
import java.util.Scanner;
public class Ex18 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println
("직급(사장/전무/부장/차장/과장/대리/사원) 중 하나의 직급을 입력하세요. :");
String position = sc.next();
//switch~case 문으로 구현한 코드
switch(position) {
case "사장" :
System.out.println("사장의 급여는 1,000만원 입니다.");
break;
case "전무" :
System.out.println("사장의 급여는 800만원 입니다.");
break;
case "부장" :
System.out.println("사장의 급여는 700만원 입니다.");
break;
case "차장" :
System.out.println("사장의 급여는 500만원 입니다.");
break;
case "과장" :
System.out.println("사장의 급여는 400만원 입니다.");
break;
case "대리" :
System.out.println("사장의 급여는 300만원 입니다.");
break;
case "사원" :
System.out.println("사장의 급여는 200만원 입니다.");
break; //이후에 없기 때문에 break; 빼도 됨
/*
* 비교처리
* 1. 숫자와 숫자 간의 비교( == )
* 2. 문자와 문자 간의 비교( equals() )
*/
}
if(position.equals("사장")) {
System.out.println("사장의 급여는 1,000만원 입니다.");
}else if(position.equals("전무")) {
System.out.println("사장의 급여는 800만원 입니다.");
}else if(position.equals("부장")) {
System.out.println("사장의 급여는 700만원 입니다.");
}else if(position.equals("차장")) {
System.out.println("사장의 급여는 500만원 입니다.");
}else if(position.equals("과장")) {
System.out.println("사장의 급여는 400만원 입니다.");
}else if(position.equals("대리")) {
System.out.println("사장의 급여는 300만원 입니다.");
}else if(position.equals("사원")) {
System.out.println("사장의 급여는 200만원 입니다.");
}else {
System.out.println("없는 직급입니다.");
}
sc.close();
}
}
- 04_Control-Ex19
package sist;
import java.util.Scanner;
public class Ex19 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("이름을 입력하세요. : ");
String name = sc.next();
System.out.println("국어 점수 입력 : ");
int kor = sc.nextInt();
System.out.println("영어 점수 입력 : ");
int eng = sc.nextInt();
System.out.println("수학 점수 입력 : ");
int mat = sc.nextInt();
System.out.println("자바 점수 입력 : ");
int java = sc.nextInt();
//총점을 구하자.
int tot = kor + eng + mat + java;
//평균을 구하자.
double avg = tot / 4.0;
//학점을 구하자.
String grade;
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.println("이 름 : "+ name);
System.out.println("국어점수 : " +kor+ "점");
System.out.println("영어점수 : " +eng+ "점");
System.out.println("수학점수 : " +mat+ "점");
System.out.println("자바점수 : " +java+ "점");
System.out.println("총 점 : " +tot+ "점");
System.out.printf("평 균 : %.2f점\n", avg);
System.out.println("학 점 : " +grade);
sc.close();
}
}
- 04_Control-Ex20
* 2. 반복문
* - 반복해서 실행할 때 사용하는 문장.
* - 반복문의 종류 : while문, do~while문, for문
*/
/*
* while 반복문
* - 조건식을 비교하여 참인 경우 계속해서 반복 실행문을 실행하고,
* 조건식이 거짓인 경우에는 반복문을 빠져 나가는 문장.
* - while 반복문은 반복문의 횟수를 알 수 없는 경우에 많이 사용됨.
* - 반복문에는 반드시 초기식, 조건식, 증감식이 존재해야 함.
*
* 형식)
* while(조건식) {
* 반복 실행문;
* }
*/
/*
* do~while 반복문
* - 먼저 반복 실행문을 실행하고 조건식을 비교함.
*
* 형식)
* do {
* 반복 실행문;;
* }while(조건식);

package sist;
/*
* 2. 반복문
* - 반복해서 실행할 때 사용하는 문장.
* - 반복문의 종류 : while문, do~while문, for문
*/
/*
* while 반복문
* - 조건식을 비교하여 참인 경우 계속해서 반복 실행문을 실행하고,
* 조건식이 거짓인 경우에는 반복문을 빠져 나가는 문장.
* - while 반복문은 반복문의 횟수를 알 수 없는 경우에 많이 사용됨.
* - 반복문에는 반드시 초기식, 조건식, 증감식이 존재해야 함.
*
* 형식)
* while(조건식) {
* 반복 실행문;
* }
*/
/*
* do~while 반복문
* - 먼저 반복 실행문을 실행하고 조건식을 비교함.
*
* 형식)
* do {
* 반복 실행문;;
* }while(조건식);
*/
public class Ex20 {
public static void main(String[] args) {
//순수하게 출력문을 이용하여 1 ~ 10까지 출력한 문장.
System.out.println("su >>> " +1);
System.out.println("su >>> " +2);
System.out.println("su >>> " +3);
System.out.println("su >>> " +4);
System.out.println("su >>> " +5);
System.out.println("su >>> " +6);
System.out.println("su >>> " +7);
System.out.println("su >>> " +8);
System.out.println("su >>> " +9);
System.out.println("su >>> " +10);
System.out.println();
//while 반복문을 이용하여 1 ~ 10까지 출력해 보자.
int num = 1; //반복문에서의 초기식
while(num >= 10) { //반복문에서의 조건식
System.out.println("num >> " + num);
num++; //반복문에서의 증감식
}
System.out.println();
// do ~ while문을 이용하여 1 ~ 10까지 출력해 보자.
int number = 1; //초기식
do {
System.out.println("number >>> " + number);
number++; //증감식
}while(number >= 10);
}
}



- 04_Control-Ex21
package sist;
public class Ex21 {
public static void main(String[] args) {
//while 반복문을 이용하여 1 ~ 10 까지의 합을 구해 보자.
int sum = 0; //합을 저장하는 변수
int su = 1; //반복문에서의 초기값
while(su <= 10) { //반복문에서의 조건식
sum =sum + su;
su++; //반복문에서의 증감식
}
System.out.println("sum >>> " + sum);
}
}
- 04_Control-Ex22
package sist;
public class Ex22 {
public static void main(String[] args) {
// ABCDEFG...XYZ 까지 문자를 출력해 보자.
char alpha = 'A';
while(alpha <= 'Z') {
System.out.print(alpha);
alpha++;
}
System.out.println();
System.out.println();
//ZYXW...DCBA까지 문자를 출력해 보자.
char alpha1 = 'Z';
while(alpha1 >= 'A') {
System.out.print(alpha1);
alpha1--;
}
}
}
차이
while 반복문
do~while 반복문
int num = 1; //반복문에서의 초기식
while(num <= 10) { //반복문에서의 조건식
System.out.println("num >> " + num);
num++; //반복문에서의 증감식
}
//거짓이기 때문에 처음무터 실행이 되지 않음
- 04_Control-Ex23
int number = 1; //초기식
do {
System.out.println("number >>> " + number);
number++; //증감식
}while(number >= 10);
//1번은 실행이됨

package sist;
// 1 ~ 100까지의 홀수의 합과 짝수의 합을 구해 보자.
public class Ex23 {
public static void main(String[] args) {
int su = 1; //반복문에서의 초기식
// 홀수의 합 (누적)변수, 짝수의 합 변수
int odd = 0, even = 0;
while(su <= 100) {
if(su%2 == 1) {
odd = odd + su;
}else {
even = even + su;
}
su++;
} //while 반복문 end
System.out.println("홀수의 합 >>> " + odd);
System.out.println("짝수의 합 >>> " + even);
}
}
' ' : 하나의 문자를 입력
ex) 'J' (o)
'java' (x) "java"(o)
- 04_Control-Ex24

package sist;
import javax.swing.JOptionPane;
/*
* [문제] 키보드로 입력을 받은 수까지의 홀수의 합과
* 짝수의 합을 구하여 화면에 출력해 보세요.
* (단, while 반복문을 이용하여 처리)
*
*/
public class Ex24 {
public static void main(String[] args) {
int su =
Integer.parseInt(JOptionPane.showInputDialog("수를 입력하세요."));
int odd = 0, even = 0;
while(0 <= su) {
if(su%2 == 1) {
odd = odd + su;
}else {
even = even + su;
}
su--;
}
System.out.println("홀수의 합 >>> " + odd);
System.out.println("짝수의 합 >>> " + even);
}
}======
- 04_Control-Ex25
package sist;
import java.util.Scanner;
// 별을 찍어 보자.
public class Ex25 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("별의 최대 갯수를 입력하세요. :");
int starCount = sc.nextInt();
System.out.println();
if(starCount > 0) {
int count = 1;
while(count <= starCount) {
System.out.print("*");
count++;
}
}
sc.close();
}
}
- 04_Control-Ex26
package sist;
import java.util.Scanner;
/*
* 1 ~ 100 사이의 정수 중에서
* 키보드로 5개의 정수를 입력 받아서
* 5개의 정수 중에서 최댓값을 화면에 출력해 보세요.
* 예) 17, 34, 8, 93, 77
*/
public class Ex26 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int max = 0; //최대값 변수 //max변수에는 가장 작은값
int temp, su = 1;
while(su <= 5) {
System.out.println(su + "번쨰 정수 입력: ");
temp = sc.nextInt();
if(temp > max) {
max = temp;
}
su++;
}// while문 end
System.out.println("최댓값 >>> " + max);
sc.close();
}
}

- 04_Control-Ex27
숫자 맞추기 게임
컴퓨터가 생각한 숫자를 추리해서 맞춰나가는 게임
숫자가 크다 작다를 말해서 , 이 숫자보다 커 작아라는 멘트를 날릴 수 있게한다.
몇번만에 맞춰나가는지도 알 수 있다.
while(true) ==> 무한반복
package sist;
import java.util.Scanner;
//숫자 맞추기 게임
public class Ex27 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("*** 숫자 맞추기 게임 ***");
int num = (int)(Math.random()*99)+1;
System.out.println("1 ~ 99 사이의 숫자 중에서 하나의 숫자를 맞추세요.");
int count = 0; // 몇 번 만에 맞추는지 카운트하는 변수
int no = 0; //키보로 입력 받은 내가 선택한 숫자.
while(no != num) {
System.out.println("어떤 숫자일까요? : ");
no = sc.nextInt();
if(no > num) {
System.out.println("더 작은 숫자입니다.");
}else if(no < num) {
System.out.println("더 큰 숫자입니다.");
}
System.out.println("::::::::::::::::::::::");
count++;
}
System.out.println("축하하니다. 정답입니다. !!!");
System.out.println("정답 숫자 >>> " +num);
System.out.println("정답 소요 횟수 >>> " +count);
sc.close();
}
}
- 04_Control-Ex28
★for 반복문★
* for 반복문(★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★젤 중요)
* - 변수의 값을 이용하여 반복 실행하는 명령문.
* - 일정 횟수에 대한 반복을 구현할 때 효율적으로 사용되는 반복문.
* 즉, 반복문의 횟수를 알고 있는 경우에는 자주 사용됨.
*
* 형식)
* for(초기식; 조건식; 증감식) {
* 반복 실행문;
* }
*
* [for 반복문 실행 순서
* 1. 초기식 : 처음에 한번만 실행됨(변수 선언)
* 2. 조건식 : 조건이 참이면 반복, 거짓이면 탈출(exit)
* 3. 실행문 : 조건이 참일 때 반복 대상인 반복 실행문이 실행됨.
* 4. 증감식 : 변수를 대상으로 증가(++) 또는 감소(--)
package sist;
/*
* for 반복문(★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★젤 중요)
* - 변수의 값을 이용하여 반복 실행하는 명령문.
* - 일정 횟수에 대한 반복을 구현할 때 효율적으로 사용되는 반복문.
* 즉, 반복문의 횟수를 알고 있는 경우에는 자주 사용됨.
*
* 형식)
* for(초기식; 조건식; 증감식) {
* 반복 실행문;
* }
*
* [for 반복문 실행 순서
* 1. 초기식 : 처음에 한번만 실행됨(변수 선언)
* 2. 조건식 : 조건이 참이면 반복, 거짓이면 탈출(exit)
* 3. 실행문 : 조건이 참일 때 반복 대상인 반복 실행문이 실행됨.
* 4. 증감식 : 변수를 대상으로 증가(++) 또는 감소(--)
*/
public class Ex28 {
public static void main(String[] args) {
//while 반복문을 이용하여 1 ~ 10까지 출력해 보자.
int num = 1; //반복문에서의 초기식
while(num <= 10) { //반복문에서의 조건식
System.out.println("num >>> " + num);
num++; //반복문에서의 증감식
}
System.out.println();
//for 반복문을 이용하여 1 ~ 10까지 출력해 보자.
for(int su=1; su<=10; su++) {
System.out.println("su >>> " + su);
}
}
}


- 04_Control-Ex29
package sist;
/* Ex23과 비교
* [문제] for반복문을 이용하여 1 ~ 100까지의
* 홀수의 합과 짝수의 합을 구하여 화면에 보여주세요.
*/
public class Ex29 {
public static void main(String[] args) {
int odd = 0, even = 0;
for(int su = 1; su <= 100; su++ ) {
if(su%2 == 1) {
odd += su; //odd = odd + su;
}else {
even += su; // even = even + su;
}
} //for 반복문 end
System.out.println("홀수의 합 >>> " + odd);
System.out.println("짝수의 합 >>> " + even);
}
}
- 04_Control-Ex30
package sist;
import java.util.Scanner;
/*
* 신장별 표준 체중 대응표를 만들어 보자.
* 표시할 신장의 범위(시작값 / 종료값/ 증가값)는 정수로
* 키보드로 입력을 받을 예정.
* - 표준 체중을 구하는 공식 : (신장 - 100) * 0.9
*/
public class Ex30 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("몇 cm부터 표시할까요? : ");
int start = sc.nextInt();
System.out.print("몇 cm까지 표시할까요? :");
int end = sc.nextInt();
System.out.print("몇 cm 단위로 표시할까요? : ");
int step = sc.nextInt();
System.out.println("신 장\t표준체중");
System.out.println("=======================");
for(int i=start; i<=end; i=i+step) {
System.out.println(i + "cm\t"+ ((i-100)*0.9)+ "kg");
}
sc.close();
}
}
- 04_Control-Ex31
다중 for 반복문
* 다중 for 반복문
* - 반복문 안에 또 다른 반복문을 포함하는 문장.
* - 반복문이 종축되어 사용되는 경우.
* - 외부 반복문과 내부 반복문 간의 변수의 갓 변화에 유의해야 함. - 중요함.
*
* 형식)
* for(초기식1; 조건식1; 증감식1) {
* 반복 실행문1;
* for(초기식2; 조건식2; 증감식2) {
* 반복 실행문2 |
* }
* }
package sist;
/*
* 다중 for 반복문
* - 반복문 안에 또 다른 반복문을 포함하는 문장.
* - 반복문이 종축되어 사용되는 경우.
* - 외부 반복문과 내부 반복문 간의 변수의 갓 변화에 유의해야 함. - 중요함.
*
* 형식)
* for(초기식1; 조건식1; 증감식1) {
* 반복 실행문1;
* for(초기식2; 조건식2; 증감식2) {
* 반복 실행문2 |
* }
* }
*/
public class Ex31 {
public static void main(String[] args) {
for(int i=1; i<=3; i++) {
for(int j=1; j<=4; j++) {
System.out.println("["+i+","+j+"]");
} //안쪽 for문 end
System.out.println(":::::::::::::::::::::");
} //바깥쪽 for문 end
}
}
- 04_Control-Ex32
package sist;
//다중 for문 이용하여 구구단을 화면에 출력해 ㅗ자.
public class Ex32 {
public static void main(String[] args) {
for(int i =2; i<=9; i++) { //구구단에서의 단
System.out.println("*** "+ i + "단 ***");
for(int j=1; j<=9; j++) {
System.out.println(i + " * " + j + " = " + (i * j));
}
System.out.println();
}
}
}

package sist;
//다중 for문 이용하여 구구단을 화면에 출력해 ㅗ자.
public class Ex32 {
public static void main(String[] args) {
for(int i =2; i<=9; i++) { //구구단에서의 단
System.out.println("*** "+ i + "단 ***");
for(int j=1; j<=9; j++) {
System.out.printf("%d * %d = %2d\n", i, j, (i * j));
}
System.out.println();
}
}
}

2d: 자리수를 두자리를 잡으라는 말로 숫자의 경우 오른쪽부터 채우고 왼쪽은 비어있게 출력이 됨

- 04_Control-Ex33
package sist;
/*
* 아래와 같이 화면에 출력을 해 보자.
*
* *****
* *****
* *****
* *****
*
*
* *
* **
* ***
* ****
* *****
*
* *****
* ****
* ***
* **
* *
*
*
*
*/
public class Ex33 {
public static void main(String[] args) {
for(int i=1; i<=4; i++) { //행
for(int j=1; j<6; j++) {
System.out.print("*");
}
System.out.println();
}
System.out.println();
System.out.println();
for(int i=1; i<6; i++) { //행
for(int j=1; j<=i; j++) {
System.out.print("*");
}
System.out.println();
}
System.out.println();
System.out.println();
for(int i=5; i>=1; i--) {
for(int j=1; j<=i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}


int i, j ; //전역변수
'coding > [2021.08.02~2022.01.24] 수업복습' 카테고리의 다른 글
[수업 6일차] 21.08.09, Exam01, Exam02, Exam03, method (0) | 2021.08.10 |
---|---|
[수업 5일차] 2021.08.06, 배열, 보조제어문, 가변배열 (0) | 2021.08.06 |
[수업 3일차] 2021.08.04/ 조건문(if,if~else...), 제어문 (0) | 2021.08.04 |
[수업 2일차] 2021.08.03 /형변환,printf,단축배정연산법 (0) | 2021.08.03 |
[수업 1일차] 2021.08.02 / java-1 / 글씨 크기변경, 변수형 (0) | 2021.08.02 |