수업내용 정리 (Java)
1. Scanner
import java.util.Scanner;
Scanner sc = new Scanner(System.in);
- Scanner 첫부분은 무조건 대문자
- Scanner를 사용하려면 import로 Scanner 클래스를 호출해줘야 한다.
- 콘솔창에서 데이터를 입력받을 수 있다.
int a = sc.nextInt();
- 입력받은 데이터를 a에 저장
2. 조건문_if (예제)
문제 > 90 이상이면 'A', 80 이상이면 'B', 70 이상이면 'C', 60 이상이면 'D', 60 미만이면 'F'
if(a >= 90) {
System.out.println(a + "는 A입니다.");
}else if(a >= 80) {
System.out.println(a + "는 B입니다.");
}else if(a >= 70) {
System.out.println(a + "는 C입니다.");
}else if(a >= 60) {
System.out.println(a + "는 D입니다.");
}else if(a < 60) {
System.out.println(a + "는 F입니다.");
}else {
System.out.println("오류");
}
문제 > 숫자 두 개를 받아 계산하기
System.out.print("첫번째 숫자> ");
int num1 = sc.nextInt(); // 콘솔 창에서 입력받아올 데이터(첫번째 숫자)
System.out.print("두번째 숫자> ");
int num2 = sc.nextInt(); // 콘솔 창에서 입력받아올 데이터(두번째 숫자)
System.out.println("1.더하기 2.빼기 3.곱하기 4.나누기 5.나머지");
System.out.print("메뉴선택> ");
int menu = sc.nextInt(); // 콘솔 창에서 입력받아올 데이터(메뉴 선택)
if(menu == 1) {
System.out.println(num1+" + "+num2+" = "+(num1+num2));
}else if(menu == 2) {
System.out.println(num1+" - "+num2+" = "+(num1-num2));
}else if(menu == 3) {
System.out.println(num1+" * "+num2+" = "+(num1*num2));
}else if(menu == 4) {
System.out.println(num1+" / "+num2+" = "+(num1/(double)num2));
}else if(menu == 5) {
System.out.println(num1+" % "+num2+" = "+(num1%num2));
}else {
System.out.println("오류!");
}
- /(나누기)에 (double)을 붙이면 정수를 실수로 형변환한다.
문제 > 입력받은 수가 3의 배수인지, 5의 배수인지, 둘 다인지, 아닌지 출력
Scanner sc = new Scanner(System.in);
System.out.println("숫자입력> ");
int a = sc.nextInt();
int b = sc.nextInt();
if(a != 0 && (a % 3 == 0 || a % 5 == 0)) {
if(a % 3 == 0 && a % 5 == 0) {
System.out.println("3과 5의 배수");
}else if(a % 5 == 0) {
System.out.println("5의 배수");
}else {
System.out.println("3의 배수");
}
}else {
System.out.println("해당 없음");
}
문제 > 로그인 (아이디가 틀렸습니다. 비밀번호가 틀렸습니다. 로그인 성공)
Scanner sc = new Scanner(System.in);
String a = "test"; // 회원가입한 아이디
String b = "1234"; // 회원가입한 비밀번호
System.out.print("아이디 입력> ");
String id = sc.next(); // 콘솔 창에서 입력받아올 데이터
System.out.print("비밀번호 입력> ");
String pw = sc.next(); // 콘솔 창에서 입력받아올 데이터
if(id.equals(a) || pw.equals(b)) {
if(id.equals(a) && pw.equals(b)){
System.out.println("로그인 성공");
}else if(!id.equals(a)){
System.out.println("아이디가 틀렸습니다.)");
}else{
System.out.println("비밀번호가 틀렸습니다.");
}
}else {
System.out.println("로그인 실패");
}
- String은 같다는 것을 ==이 아닌 .equals()로 비교하고, 같지 않다는 것은 없어서 .equals()를 붙이고 앞에 !를 붙이면 된다. (괄호 안에 비교할 것을 입력)
3. 조건문_switch
switch(a) {
case 1:
System.out.println("a는 1입니다.");
break; // break가 없으면 그 밑으로 계속 실행함
case 2:
System.out.println("a는 2입니다.");
break;
case 3:
System.out.println("a는 3입니다.");
break;
default: // else와 같음
System.out.println("a는 1, 2, 3이 아닙니다.");
}
- if처럼 해당하지 않으면 다음으로 넘어간다.
- case는 비교가 불가
- break가 없으면 해당하는 case부터 계속 실행한다.
- default는 else와 같다. 위에서 해당하지 않은 경우에 실행한다.
3-1) 조건문_switch (예제)
int sum = 100;
int num = 2;
switch(num) {
case 1:
sum = sum+100;
case 2:
sum =100;
case 3:
sum = sum+200;
case 4:
sum = 200;
case 5:
sum = sum+300;
break;
default:
sum = 300;
}
- 해당 식의 출력 값은 500.
- 시작하는 case는 2지만 break가 case 5에 있기 때문에 case 2부터 5까지 계속 실행한다.
case 2:
sum = 100; // sum에 100을 대입 sum == 100
case 3:
sum = sum+200; // sum에 200을 더함 sum == 300
case 4:
sum = 200; // sum에 200을 대입 sum == 200
case 5:
sum = sum+300; // sum에 300을 더함 sum == 500
break;
4. 반복문_for
for(초기값; 조건식; 증감식) {
실행문;
}
- 초기값이 조건식에서 참이면 실행문을 실행하고, 증감했을때 조건식에서 참이면 다시 실행문을 실행하는 것을 반복하다가 조건식에서 거짓일때 for문이 종료된다.
- 조건식이 참일 때까지 for문 반복
4-1) 반복문_for (예제)
문제 > 1부터 10까지 출력
for(int i=1; i<=10; i++){
System.out.println(i);
}
문제 > sum에 100까지 누적해서 합을 출력
int sum = 0;
for(int i=1; i<=100; i++) {
sum = sum+i; // sum += i; 와 같음
}
System.out.println(sum);
문제 > 1~100부터 3의 배수, 5의 배수의 개수를 출력
int sum3 = 0;
int sum5 = 0;
for(int i=1; i<=100; i++{
if(i%3 == 0) {
sum3 = sum3+1;
}
if(i%5 == 0) {
sum5 = sum5+1;
}
}
System.out.println("1~100까지 3의 배수의 개수는: "+sum3);
System.out.println("1~100까지 5의 배수의 개수는: "+sum5);
문제 > 구구단을 가로로 출력
1- 일반 구구단
for(int i=2; i<10; i++) {
System.out.println(i+"단");
for(int j=1; j<10; j++) {
System.out.println(i+" * "+j+" = "+(i*j));
}
System.out.println();
}
2- 가로로 출력한 구구단
for(int i=0; i<10; i++) {
for(int j=2; j<10; j++) {
if(i == 0) {
System.out.print(j+"단"+"\t\t");
}else {
System.out.print(j+" * "+i+" = "+(i*j)+"\t");
}
}
System.out.println();
}
출력 예시)
2단 3단 4단 5단
2 * 1 = 2 3 * 1 = 3 4 * 1 = 4 5 * 1 = 5
2 * 2 = 4 3 * 2 = 6 4 * 2 = 8 5 * 2 = 10
- ln을 사용함으로 단을 나눠버리면 다시 위로 돌아가 수정/작성할 수 없으므로 단을 나누기 전에 해결해야 가로로 출력 할 수 있다.
- 가로로 출력하기 위해서는 단(1- 식의 i)과 곱할 수(1- 식의 j)의 자리를 바꿔주면 가능하다.
- 2단~9단을 한 번만 적기 위해서는 반복할 수 없도록 걸러줘야 한다.
걸러주기 위해서 곱할 수(2- 식의 i)를 0으로 내려주고, for문 안의 for문에서 if를 사용하여 i가 0일 때는 j단을 출력한다고 조건을 걸어준다. else로는 0이 아닐 때에는 구구단을 출력한다.
질문한 내용이나 어려웠던 점 메모
- for문 문제에서 배수의 개수를 출력하는 식을 만들때 %랑 /를 헷갈려서 /로 식을 만들다가 안 풀려서 물어봤다.
% : 나머지
/ : 나누기 - 구구단을 가로로 출력: 구구단을 가로로 출력하는 것까지는 해결했는데 처음에 단을 늘어놓는 것이 너무 어려웠다. 단을 적으려다가 이미 출력해둔 구구단이 망가지거나 2단~9단이 구구단을 할 때마다 계속 실행되고 그래서 질문을 통해 하나하나 설명을 들었다.
전체 피드백
- 아직은 부호가 헷갈려서 버벅거리는 부분이 있다.
- 너무 배웠던 내용으로만 생각해서 문제를 풀기 어려웠던 것 같다. 응용하는 능력을 조금 길러야할 것 같다.
- for문을 제하면 그래도 잘하고 있는 것 같다!
'프로그래밍 > 수업일지' 카테고리의 다른 글
수업일지 6일차 (23/09/21) - Java (0) | 2023.09.21 |
---|---|
수업일지 5일차 (23/09/20) - Java (0) | 2023.09.20 |
수업일지 4일차 (23/09/19) - Java (0) | 2023.09.19 |
수업일지 3일차 (23/09/18) - Java (1) | 2023.09.18 |
수업일지 1일차 (23/09/14) - Java (0) | 2023.09.14 |