조건1. score가 90보다 같거나 크면 A
조건2. 90점 이상 중에서도 98점 이상일 때에는 A+
조건3. 90점 이상 94점 미만의 경우 A-
조건4. 80점 보다 크거나 같으면 B
조건5. 나머지 학점은 C
public static void main(String[] args) {
int score = 0;
char grade = ' ', opt = ' ';
System.out.print("점수를 입력해주세요.>");
Scanner scanner = new Scanner(System.in);
score = scanner.nextInt();
System.out.printf("당신의 점수는 %d입니다.%n", score);
if (score >= 90) { // score가 90점 보다 같거나 크면 A학점(grade)
grade = 'A';
if (score >= 98) { // 90점 이상 중에서도 98점 이상은 A+
opt = '+';
} else if (score < 94) { // 90점 이상 94점 미만은 A-
opt = '-';
}
} else if (score >= 80){ // score가 80점 보다 같거나 크면 B학점(grade)
grade = 'B';
if (score >= 88) {
opt = '+';
} else if (score < 84) {
opt = '-';
}
} else { // 나머지는 C학점(grade)
grade = 'C';
}
System.out.printf("당신의 학점은 %c%c입니다.%n", grade, opt);
}
--> 여러 경우의 수를 노트에 먼저 필기해 놓으면 여러 if문을 사용하여 코드를 작성할 때 편하다.
* 조심!!
--> 실수로 break문을 빼먹지 않도록 주의해야 한다.
* switch문의 제약조건!!
public static void main(String[] args) {
System.out.print("현재 월을 입력하세요.>");
Scanner scanner = new Scanner(System.in);
int month = scanner.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;
default:
// case 12: case 1: case 2:
System.out.println("현재의 계절은 겨울입니다.");
}
} // main의 끝
--> break문을 입력하지 않을 시 무한루프에 빠지게 된다. 꼭 조건이 완료되었을 때 빠져나올 수 있는 break문을 작성해야 한다.
1) 각 변에 3을 곱한다. ( 곱하는 3이 개별값의 갯수가 된다. )
0.0 <= Math.random() 3 < 1.0 3
0.0 <= Math.random() 3 < 3.0
2) 각 변을 int형으로 변환한다.
(int)0.0 <= (int)(Math.random() 3) < (int)3.0
0 <= (int)(Math.random() * 3) < 3
3) 각 변에 1을 더한다.
0 + 1 <= (int)(Math.random() 3) + 1 < 3 + 1
1 <= (int)(Math.random() 3) + 1 < 4
int num = 0;
for (int i = 1; i <= 20; i++) {
num = (int) (Math.random() * 6) + 1;
System.out.println(num);
System.out.println(Math.random()); // 0.0 <= x < 1.0
System.out.println(Math.random()*10); // 0.0 <= x < 10.0
System.out.println((int)(Math.random()*10)); // 0 <= x 10
System.out.println((int)(Math.random()*10)+1); // 1 <= x < 11
System.out.println((int)(Math.random()*11)-5); // -5 <= x < 6
}
--> 경우에 따라 여러 난수의 범위를 설정 할 수 있다. 생각보다 Math.random()을 사용하는 경우가 가끔씩 발생하하기 떄문에 매일 찾아보지 않기 위해서 확실하게 쓰는 방식을 알아두는게 좋다 !!
for(int i = 10; 1 >= 1; i--) {
System.out.println(i);
}
--> 이럴 경우에는 무한반복에 빠지게 된다.
--> 항상 기본 코드를 짜 놓고 이거를 어떻게 for문으로 바꿀 수 있는지를 고민하자
public static void main(String[] args) {
for(int i=1;i<=5;i++) {
for(int j=1;j<=i;j++) {
System.out.print("*");
}
System.out.println();
}
}
public static void main(String[] args) {
int num = 0, sum = 0;
System.out.print("숫자를 입력하세요.(예:12345)>");
Scanner scanner = new Scanner(System.in);
String tmp = scanner.nextLine();
num = Integer.parseInt(tmp); // 입력받은 문자열(tmp)을 숫자로 변환
while(num!=0) {
// num을 10으로 나눈 나머지를 sum에 더함
sum += num%10; // sum = sum + num%10;
System.out.printf("sum=%3d num=%d%n", sum, num);
num /= 10; // num = num / 10; num을 10으로 나눈 값을 다시 num에 저장
}
System.out.println("각 자리수의 합:"+sum);
}
--> 10으로 나눈 후 나머지의 값으로 한다는 사고방식 자체를 머리속에 넣어두면 좋겠다고 생각했다.
do {
// 조건식의 연산결과가 참일 때 수행될 문장들을 적는다. (처음 한 번은 무조건 실행)
} while (조건식); <- 끝에 꼭 ';'을 잊지 않도록 주의!!
public static void main(String[] args) {
int input = 0, answer = 0;
answer = (int)(Math.random() * 100) + 1; // 1~100 사이의 임의의 수를 저장
Scanner scanner = new Scanner(System.in);
do {
System.out.print("1과 100사이의 정수를 입력하세요.>");
input = scanner.nextInt();
if(input > answer) {
System.out.println("더 작은 수로 다시 시도해보세요.");
} else if(input < answer) {
System.out.println("더 큰 수로 다시 시도해보세요.");
}
} while(input!=answer);
System.out.println("정답입니다.");
}
class Ex4_15 {
public static void main(String[] args) {
int input = 0, answer = 0;
answer = (int) (Math.random() * 100) + 1; // 1~100 사이의 임의의 수를 저장
Scanner scanner = new Scanner(System.in);
System.out.print("1과 100사이의 정수를 입력하세요.>");
input = scanner.nextInt();
while (input != answer) {
if (input > answer) {
System.out.println("더 작은 수로 다시 시도해보세요.");
} else if (input < answer) {
System.out.println("더 큰 수로 다시 시도해보세요.");
}
System.out.print("1과 100사이의 정수를 입력하세요.>");
input = scanner.nextInt();
}
System.out.println("정답입니다.");
}
}
public static void main(String[] args) {
int menu = 0;
int num = 0;
Scanner scanner = new Scanner(System.in);
while(true) {
System.out.println("(1) square");
System.out.println("(2) square root");
System.out.println("(3) log");
System.out.print("원하는 메뉴(1~3)를 선택하세요.(종료:0)>");
String tmp = scanner.nextLine();
menu = Integer.parseInt(tmp);
if(menu==0) {
System.out.println("프로그램을 종료합니다.");
break;
} else if (!(1 <= menu && menu <= 3)) {
System.out.println("메뉴를 잘못 선택하셨습니다.(종료는 0)");
continue;
}
System.out.println("선택하신 메뉴는 "+ menu +"번입니다.");
}
}
--> 빠져나올 때와 계속 이어나갈 때의 기준을 잘 세워서 작성해야 한다.
public static void main(String[] args)
{
// for문에 Loop1이라는 이름을 붙였다.
Loop1 : for(int i=2;i <=9;i++) {
for(int j=1;j <=9;j++) {
if(j==5)
break Loop1; --> 전체로 빠져나가고 싶을 때
//break; --> 기존 for문에서만 빠져나가고 싶을 때
continue Loop1;
continue;
System.out.println(i+"*"+ j +"="+ i*j);
} // end of for i
System.out.println();
} // end of Loop1
}
당연하게 써왔던 for문에 대해서 다시 한번 점검할 수 있는 시간이였다. 가끔 break문을 쓰지 않아서 무한루프에 빠지는 경우가 있었는데.. 조금 더 신중하게 사용해야겠다. 또한 2중 for문을 쓸 경우 스스로 작성하면서도 햇갈리는 경우가 있었는데 동시발생의 개념으로 2가지 일에 대한 처리를 할 때 사용한다는 개념으로 받아들여야 겠다. 예를 들어 별찍기에 경우 for문을 한번만 사용할 경우 가로축 or 세로축 중에서 하나만 실행되고 가로축과 세로축을 동시에 실행시키고 싶을 때 2중 for문을 사용한다는 개념으로 작성해야 겠다.