** 복습 **
변수 설정 : 데이터타입 변수명 = 초기값;
산술연산자중 : / % 용도
나머지(%)용도 - 1. 짝,홀수 구하기 ex) if(a%2 == 0) 짝수
if(a%2 != 0) 홀수
2. 배수 구하기 ex) if(a%5 == 0) 5의 배수
if(a%2 != 0) 5의 배수 X
import java.util.Scanner;
public class MySample1102 {
public static void main(String[] args)
{
Scanner scn = new Scanner(System.in);
}
}
** 실습1 **
/* 1
문제)주사위를 두번 던져서 나온 수를 입력받아 두수가 모두 4이상이면 "이겼습니다."
한개만 4이상이면 "비겼습니다." 모두 4미만이면 "졌습니다."라고 출력하는 프로그램
입력예)주사위 던진 결과를 입력하세요.>3 4
출력예)비겼습니다.
입력예)주사위 던진 결과를 입력하세요.>3 8
출력예)입력값은 1~6사이 값으로 하세요.
단, 주사위 입력값은 1~6사이 값이어야 함. if로만 체크함
*/
import java.util.Scanner;
public class MySample1102 {
public static void main(String[] args)
{
Scanner scn = new Scanner(System.in);
int a = scn.nextInt();
int b = scn.nextInt();
if (1 <= a && a <= 6 && 1<= b && b <= 6)
{
if(a >= 4 && b >= 4)
{
System.out.println("이겼습니다.");
}
else if(a >= 4 || b >= 4)
{
System.out.println("비겼습니다.");
}
else
{
System.out.println("졌습니다.");
}
}
else
{
System.out.println("입력값은 1~6사이 값으로 하세요.");
}
//-----------------------------------------------------------------------------
//다른 풀이
System.out.print("주사위 던진 결과를 입력하세요.>");
int a = scn.nextInt();
int b = scn.nextInt();
if(a < 1 || a > 6 || b < 1 || b >6)
{
System.out.println("입력값은 1~6사이 값으로 하세요.");
}
else if(a >=4 && b >= 4)
{
System.out.println("이겼습니다.");
}
else if(a >= 4 || b >= 4)
{
System.out.println("비겼습니다.");
}
else
{
System.out.println("졌습니다.");
}
}
}
** 실습2 **
/* 2
문제)중첩if
정수 개를 입력받아 그 중 가장 큰 수를 출력하는 프로그램
입력예)세개의 정수를 입력하세요.>1 5 4
출력예)입력받은 수 중 가장 큰 수는 5 입니다.
단, 출력은 max 변수를 사용함
*/
import java.util.Scanner;
public class MySample1102 {
public static void main(String[] args)
{
Scanner scn = new Scanner(System.in);
System.out.println("세개의 정수를 입력하세요");
int a = scn.nextInt();
int b = scn.nextInt();
int c = scn.nextInt();
if (a >= b) {
if(a >= c)
{
System.out.printf("입력받은 수 중 가장 큰 수는 %d 입니다. \n",a );
}
else
{
System.out.printf("입력받은 수 중 가장 큰 수는 %d 입니다. \n",c );
}
}
else
{
if (b >= c)
{
System.out.printf("입력받은 수 중 가장 큰 수는 %d 입니다. \n",b );
}
else
{
System.out.printf("입력받은 수 중 가장 큰 수는 %d 입니다. \n",c );
}
}
//--------------------------------------------------------------------------------------
//출력을 max변수로 사용한 경우
System.out.println("세개의 정수를 입력하세요");
int a = scn.nextInt();
int b = scn.nextInt();
int c = scn.nextInt();
int max;
if (a >= b) {
if(a >= c)
{
max = a;
}
else
{
max = c;
}
}
else{
if (b >= c)
{
max = b;
}
else
{
max = c;
}
}
System.out.printf("입력받은 수 중 가장 큰 수는 %d 입니다. \n", max);
}
}
Tip - ex) if 절안에서 변수를 선언하면 그 변수를 포함한 if {괄호} 밖에서는 사용할 수 없다.
- 같은 변수는 한 번 더 선언할 수 없다.
** 실습3 **
/* 3
문제)점수를 입력받아 90~100점 사이는 'A'이면서 98~100점은 'A+'로 나타내고
90~93점은 'A-'로 나타내고 94~97점은 'A'로 나타내는 프로그램
단, 80~83점은 " B-', 84~87점 'B', 88~89점은 'B+'표시로하고
A, B를 제외한 나머지는 'c'학접으로 표시함. @점수 입력값은 0~100 이라고 가정한다.
입력예)점수를 입력하세요.>100
출력예)당신의 점수는 100점 입니다.
당신의 학점은 A+입니다.
입력예)점수를 입력하세요.>81
출력예)당신의 점수는 81점 입니다.
당신의 학점은 B-입니다.
입력예)점수를 입력하세요.>85
출력예)당신의 점수는 85점 입니다.
당신의 학점은 B입니다.
입력예)점수를 입력하세요.>69
출력예)당신의 점수는 69점 입니다.
당신의 학점은 C입니다.
*/
import java.util.Scanner;
public class MySample1102 {
public static void main(String[] args)
{
Scanner scn = new Scanner(System.in);
int score; //점수
char grade = ' ', opt = ' '; //학점, 부호
System.out.println("점수를 입력하세요.>");
score = scn.nextInt();
System.out.println("당신의 점수는 " + score + "입니다.");
if (score >= 80)
{
if(score < 90)
{
grade = 'B';
if(score <= 83 )
{
opt = '-';
}
else if(score <= 87 )
{
opt = ' ';
}
else
{
opt = '+';
}
}
else
{
grade = 'A';
if(score <= 93 )
{
opt = '-';
}
else if(score <= 97 )
{
opt = ' ';
}
else
{
opt = '+';
}
}
}
else
{
grade = 'C';
}
System.out.printf("당신의 학점은 %s%s입니다.",grade, opt);
// 다른 풀이
int score; //점수
char grade = ' ', opt = ' '; //학점, 부호
System.out.println("점수를 입력하세요.>");
score = scn.nextInt();
System.out.println("당신의 점수는 " + score + "입니다.");
if(score >= 90)
{
grade = 'A';
if(score >= 98)
{
opt = '+';
}
else if(score <= 93)
{
opt = '-';
}
else
{
opt = ' ';
}
}
else if(score >= 80)
{
grade = 'B';
if(score >= 88)
{
opt = '+';
}
else if(score <= 83)
{
opt = '-';
}
else
{
opt = ' ';
}
}
else
{
grade = 'C';
opt = ' ';
}
if(opt == ' ')
{
System.out.printf("당신의 학점은 %c입니다. \n", grade);
}
else
{
System.out.printf("당신의 학점은 %c%c입니다. \n", grade, opt);
System.out.printf("grade 숫자 %d, 값: %c \n",
Integer.valueOf(grade), grade); //유일하게 char타입은 영문자는 아스키코드와 일치된다.(?) (Integer.valueOf)
}
}
** 조건문 (switch) **
switch(조건식) // 조건식을 계산한 값을 분기
{
case 값1: //값에 변수,실수 불가(문자열 리터럴 가능 JDK1.7부터)
//조건식의 결과와 값1이 같은 경우 실행
break;
case 값2:
//조건식의 결과와 값2이 같은 경우 실행
break;
default:
//조건식의 결과와 일치하는 경우가 없을 경우 실행
break;
}
- break가 없으면 {}끝날때까지 실행
Tip - 모든 swich문은 if문으로 표현 간능 (반대는 모두 가능하지는 않음)
//** 실습 4 (간단한 예제) <switch~case문>
import java.util.Scanner;
public class MySample1102 {
public static void main(String[] args)
{
Scanner scn = new Scanner(System.in);
//** switch~case 문
//** 실습 4 (간단한 예제)
int a =3;
switch(a)
{
case 3:
System.out.println("3 입니다.");
break; //break;가 없으면 "default 입니다."까지 출력된다. break는 본인을 감싸고 있는 첫번째 중괄호밖을 빠져나감
default:
System.out.println("default 입니다.");
}
int a = 2;
switch(a)
{
default:
System.out.println("default 입니다.");
case 3:
System.out.println("3 입니다.");
// break; // "default 입니다." / "3 입니다." 모두 출력됨 default가 마지막에오는경우만 break안써도 된다.
}
//switch~case 문
int a = 5;
switch(3)
{
case 1:
System.out.println("1 입니다.");
break;
case 2:
System.out.println("2 입니다.");
//break;
case 3:
System.out.println("3 입니다.");
//break;
default:
System.out.println("default 입니다.");
}
}
}
** 실습5 **
/* 5
문제)현재월을 입력받아 계절을 출력하는 프로그램 작성.
입력예)현재 월을 입력하세요.>11
출력예)현재 계절은 가을입니다.
단, 3,4,5 : 봄 . 6,7,8 : 여름 / 9,10,11 : 가을 / 12,1,2, :겨울
입력값은 1~12사이 (아닐경우 '월을 잘못입력하셨습니다.')
*/
import java.util.Scanner;
public class MySample1102 {
public static void main(String[] args)
{
Scanner scn = new Scanner(System.in);
System.out.print("현재 월을 입력하세요.>");
int month = scn.nextInt();
switch(month)
{
case 1:
System.out.println("현재 계절은 겨울입니다.");
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;
case 7:
System.out.println("현재 계절은 여름입니다.");
break;
case 8:
System.out.println("현재 계절은 여름입니다.");
break;
case 9:
System.out.println("현재 계절은 가을입니다.");
break;
case 10:
System.out.println("현재 계절은 가을입니다.");
break;
case 11:
System.out.println("현재 계절은 가을입니다.");
break;
case 12:
System.out.println("현재 계절은 겨울입니다.");
break;
default:
System.out.println("월을 잘못입력하셨습니다.");
}
// 위 문제를 줄이는 방법
System.out.print("현재 월을 입력하세요.>");
int month = scn.nextInt();
switch(month)
{
case 3:
case 4:
case 5:
System.out.println("현재 계절은 봄입니다.");
break;
case 6:
case 7:
case 8:
System.out.println("현재 계절은 여름입니다.");
break;
case 9:
case 10:
case 11:
System.out.println("현재 계절은 가을입니다.");
break;
case 12:
case 1:
case 2:
System.out.println("현재 계절은 겨울입니다.");
break;
default:
System.out.println("월을 잘못입력하셨습니다.");
}
// 위 문제(switch)를 if문으로 변경
System.out.print("현재 월을 입력하세요.>");
int month = scn.nextInt();
if(month == 3 || month == 4 || month == 5)
{
System.out.println("현재 계절은 봄입니다.");
}
else if(month == 6 || month == 7 || month == 8)
{
System.out.println("현재 계절은 여름입니다.");
}
else if(month == 9 || month == 10 || month == 11)
{
System.out.println("현재 계절은 가을입니다.");
}
else if(month == 12 || month == 1 || month == 2)
{
System.out.println("현재 계절은 봄입니다.");
}
else {
System.out.println("월을 잘못입력하셨습니다.");
}
}
}
** 실습6 **
/* 6
문제)아래의 메뉴에서 선택한 메뉴를 알려주는 프로그램.
단, 해당 숫자 이외에 값을 입력받을 경우 "잘못 입력하셨습니다."라는 메세지 출력
입력예)1.추가
2.수정
3.삭제
메뉴번호를 선택하세요.>2
출력예)수정을 선택하셨습니다.
단, switch case문에서는 '추가를', '수정을', '삭제를', '잘못'에 해당하는 문자열
만 출력하고 최종 한번만 "선택하셨습니다."를 출력하는 프로그램.
*/
System.out.println("1.추가"); //System.out.println("1.추가\r\n" + "2.수정\r\n" + "3.삭제\r\n" + "메뉴번호를 선택하세요.>"); 도 가능
System.out.println("2.수정");
System.out.println("3.삭제");
System.out.print("메뉴번로를 선택하세요.>");
int num = scn.nextInt();
switch(num) {
case 1:
System.out.print("추가를");
break;
case 2:
System.out.print("수정을");
break;
case 3:
System.out.print("삭제를");
break;
default:
System.out.print("잘못");
}
System.out.println(" 선택하셨습니다.");
** 실습7 **
/* 7
switch문 사용
문제)점수를 입력받아 학점을 출력하는 프로그램
점수는 90~100 : 'A', 80~89 : 'B', 70~79 : 'C', 나머지는 'F'로 정의
(char타입에 memo변수 사용)
입력예)당신의 점수를 입력하세요.(1~100)>82
출력예)당신의 학점은 'B'입니다.
*/
import java.util.Scanner;
public class MySample1102 {
public static void main(String[] args)
{
Scanner scn = new Scanner(System.in);
char memo = ' ';
int score;
System.out.print("당신의 점수를 입력하세요.>");
score = scn.nextInt();
switch (score/10) {
case 10:
case 9:
memo = 'A';
break;
case 8:
memo = 'B';
break;
case 7:
memo = 'C';
break;
default:
memo = 'F';
}
System.out.printf("당신의 학점은 %s입니다.", memo);
}
}
제어문 -> 반복문 중 for
** for 문 (for, 다중 for) **
* 문법
for(①초기식; ②조건식, ④ 증감식)
{
③반복 실행될 문장(실행문);
}
⑥
// 초기식 - for 문 들어왔을때 한번만 실행
// 조건식 - (T/F) True
// 실행문 - 조건식이 True일 경우에 수행, False 경우 ⑥으로 반복문 빠져나간다.
// 누적되는 변수는 밖에서 초기값 설정 해야한다.
// 초기식,조건식,증감식은 경우에 따라 생략이 가능하지만 ; ; 는 생략 불가
// ① .초기식 → ② . 조건식 (t / f) → ③ .실행문 → ④ .증감식 → ② .조건식 → ③ .실행문 → ④ .증감식 → ② .조건식(F) → ⑥
사용법 예제)
int i, sum = 0;
for(i = 1;i<=5;i++)
{ //1~5까지 합
sum += i;
System.out.printf("%d %d", i, sum);
}
// printf 결과값 => 5 15
// for문 밖에서 i 값을 출력하면 = 6 이 나온다.
// ** 반복제어문 for문 **
// 예제)
// 예제)
int i, sum = 0;
for(i = 1;i <=5;i++)
{
sum += i; // 의미 => sum = sum + i;
System.out.println("i=" + i + ", sum" + sum);
}
System.out.println("for문 끝.");
System.out.println("i=" + i + ", sum" + sum);
결과
i=1, sum1
i=2, sum3
i=3, sum6
i=4, sum10
i=5, sum15
for문 끝.
i=6, sum15
** 실습8 **
/* 8
문제)1부터 10까지의 함을 구하고 출력하는 프로그램
출력예)55
단, for문으로 적용
*/
int a, sum = 0;
for (a = 1; a <= 10; a++)
{
sum += a ;
}
System.out.println(sum);
** 실습9 **
/* 9
문제)1이상 10이하의 정수를 입력받아 입력받은 정수만큼 반복하며 'JAVA프로그래밍'이라고 출력하는 프로그램
입력예)3
출력예)JAVA프로그래밍
*/
int i = scn.nextInt();
int j;
for (j = 1;j <= i;j++) // 초기식에 int j = 1; 로 for문에서 선언을 해도 되지만 그렇게되면 for문 밖에서는 사용 할 수 없다.
{
System.out.println("JAVA프로그래밍");
}
** 실습10 **
/* 10
문제)문자를 입력받아서 입력받은 문자를 20번 반복하여 출력하는 프로그램
단, 입력받을때 char a = scn.nextLine().charAt(0); // char 문자를 받을 때 맨 앞에 숫자 하나만 받겠다는 의미
입력예)A
출력예)AAAAAAAAAAAAAAAAAAAA
*/
char a = scn.nextLine().charAt(0);
int i;
for (i=1;i<=20;i++)
{
System.out.print(a);
}
'수업끄적끄적_7MONTH > Java' 카테고리의 다른 글
11/07 수업 (7일차) (1) | 2023.11.07 |
---|---|
11/06 수업 (6일차) (0) | 2023.11.06 |
11/01 수업 (3일차) (0) | 2023.11.05 |
10/31 수업 (2일차) (0) | 2023.11.05 |
10/30 수업 (1일차) (0) | 2023.11.05 |