이전 내용
조건문 (if 문)
◆ if 문 (+ else)
조건을 판단하여 해당 조건에 맞는 상황을 수행하는 데 쓰인다.
if 문은 주어진 조건이 참일 때 실행되는 코드 블록이고, else 문은 if 문의 조건이 거짓일 때 실행되는 코드 블록이다.
// if 문 (명령문이 하나일 경우)
if (조건)
명령문
// if 문 (명령문이 하나 이상일 경우)
if (조건) {
명령문1
명령문2
...
}
아래의 코드는 나이에 따라 성인, 미성년을 구분하는 조건문이며, 이를 실행하면
package java_ex04;
public class Ex01 {
public static void main(String[] args) {
//if문
int age = 34;
String gender = "";
//if(조건) { true; }else{ false; }
if(age >= 20) {
gender = "성인";
}else {
gender = "미성년";
}
System.out.println("A씨는 나이가 " + age + "세이므로 "
+ gender + "입니다.");
}
}
◆ if 문 (+ else if + else)
다중 조건 사용 시 사용하는 문법
if 조건 1
else if 조건2
else if 조건3
.....
else 조건 n
※ else if는 여러 번 사용될 수 있으나, else는 마지막에 한 번만 사용할 수 있다.
// if(조건1) { true } else if(조건2) { true } ...
// else { false }
int tot = 215;
float avg = (float)tot / 3;
char grade;
if (avg>=90) {
grade = 'A';
}else if(avg>=80) {
grade = 'B';
}else if(avg>=70) {
grade = 'C';
}else if(avg>=60) {
grade = 'D';
}else {
grade = 'F';
}
System.out.println("총점은 " + tot + "점이고, "
+ "평균은 "+ avg + "점이고, 학점은 "+grade+"이다.");
▶ (조건1) 평균이 90 이상이면, 등급은 A이고,
(조건2) 평균이 80이상이면 B,
(조건3) 70이상이면 C, (조건4) 60이상이면 D, (조건5) 나머지는 F 학점이 출력되게 한다.
◆ char : 문자형 타입
◆ boolean : 논리형 타입 (참(true), 거짓(false))
// 문자형 변수 : 문자를 1개만 저장하는 변수
char chr = '가';
//논리형 변수 : true 또는 false만 저장하는 변수
boolean logical = false;
//만약 chr변수의 값이 A라면 logical => true 저장
if(chr == 'A') {
logical = true;
}
System.out.println(chr + "=>" + logical);
▶ 문자형 타입의 chr 변수의 문자가 "A" 일 경우, true 아닐 경우 false 출력
◆ 조건문 + 반복문
1부터 100 사이의 정수 중
1) 3의 배수 개수
2) 3의 배수의 합
package java_ex05;
public class Ex_02 {
public static void main(String[] args) {
// 정수 1~100 사이의 수 중에서 3의 배수의 개수를 구하라
// for 또는 while 문, 조건문 사용
int i = 0; // 1~100의 정수
int j = 0; // 3의 배수의 개수
int tot = 0; // 3의 배수의 합
while (i<=100) { // i가 100인 동안
i++; // 1씩 증가
if(i%3 == 0) { // i 나누기 3의 나머지가 0이면
j++; // j를 하나씩 더하라
tot = tot + i; // 3의 배수의 합에 i를 더하라
}
}
System.out.println("3의 배수 개수:"+j);
System.out.println("3의 배수의 합"+tot);
}
}
조건문 (Switch Case)
Switch case는 케이스(경우)에 따른 조건문이다.
swith (조건) {
case 값1 : 명령문;
break;
case 값2 : 명령문;
break;
default : 명령문
}
※ break와 default는 생략 가능
[예시]
int menu = 2; // 게임 메뉴: 시작(1), 설정(2)
switch (menu) {
case 1: System.out.println("시작");
break;
case 2: System.out.println("설정");
break;
default: System.out.println("잘못된 메뉴");
▶ menu의 값이 1일 때는 "시작" 출력, 2일 때는 "설정" 출력, 그 외에는 "잘못된 메뉴" 출력
※ Switch ~ Case 에는 { } 내에 비교연산자가 올 수 없다.
- case 뒤의 변수가 정수면 정수, 문자면 "문자" 등 자료형에 맞는 변수가 오면 된다.
- case 문 내에 break가 반드시 포함되어야 한다. (조건에 맞을 경우 코드를 실행하고 빠져나와야 하기 때문에)
- 조건에 모두 맞지 않을 경우 default 가 실행 된다.
논리연산자
조건·판단에 쓰이는 and, or, not 연산자
- &&(and): 조건이 모두 참일 경우 true
- ||(or): 조건 중 하나만 참이라도 true
- !(not): 조건이 거짓일 경우 true
// 1부터 100사이의 3개의 정수를 변수에 각각 저장
// 저장한 변수의 값이 모두 10 이상이면 "통과" 출력
// 3개의 변수값 중 1개라도 10 미만이면 "과락" 출력
// 논리연산자 : &&(and). ||(or), !(not)
int n1 = 10;
int n2 = 9;
int n3 = 12;
if (n1 >= 10 && n2 >= 10 && n3 >= 10) {
System.out.println("통과");
} else {
System.out.println("과락");
}
// 로그인하기
String id = "abcd";
String pw = "1111";
//&& : 논리연산자(그리고), 2개의 조건이 모두 true일 때 실행
if(id == "abcd" && pw == "1234") {
System.out.println("로그인 성공!");
}else {
System.out.println("로그인 실패!");
}
// || : 논리연산자(또는), 2개의 조건 중 하나라도 true이면 실행
if(id != "abcd" || pw != "1234") {
System.out.println("아이디나 비밀번호가 맞지 않습니다.");
}else {
System.out.println("로그인 성공!");
}
▶ and - id가 abcd 이고, 비밀번호가 1234 일 경우 로그인 성공, 그렇지 않을 경우(else) 로그인 실패
or - id나 비밀번호 둘 중 하나라도 맞지 않을 경우 "아이디나 비밀번호가 맞지 않습니다." 출력
Scanner
Scanner란 사용자로 부터 입력을 받을 수 있도록 도와주는 것
먼저 Scanner sc = new Scanner (System.in); 를 작성하여 java.util.Scanner;를 import 해줘야 한다.
package java_ex04;
import java.util.Scanner;
public class Ex05 {
public static void main(String[] args) {
// 키보드 입력 객체 생성
// new : 객체 생성하라는 명령어
Scanner sc = new Scanner(System.in);
System.out.println("숫자1:");
int n1 = sc.nextInt();
System.out.println("숫자2:");
int n2 = sc.nextInt();
if(n1 > n2 ) {
System.out.println(n1 + "이 " + n2 + "보다 큼!");
}else if(n1 < n2){
System.out.println(n2 + "가 " + n1 + "보다 큼!");
}else {
System.out.println(n1 + "과 " + n2 + " 같음!");
}
}
}
// 세 개의 정수를 키보드로 입력받아 세 정수의 합을 구하고
// 세 정수의 평균도 구한 다음,
// 평균이 60점 이상이면 합격, 60점 미만이면 불합격이다.
// 출력형식 :
// 총점 : 000
// 평균 : 00.00
// 결과 : 합격
Scanner sc = new Scanner(System.in);
System.out.print("정수1:");
int n1 = sc.nextInt();
System.out.print("정수2:");
int n2 = sc.nextInt();
System.out.print("정수3:");
int n3 = sc.nextInt();
int tot = n1 + n2 + n3;
float avg = (float)tot / 3;
String result;
if(avg>=60) {
result = "합격";
}else {
result = "불합격";
}
System.out.println("총점 : " + tot);
System.out.println("평균 : " + avg);
System.out.println("결과 : " + result);
// 정수 3개를 키보드로 입력 받아서 합계 출력
// 클래스 이름 변수명 new (객체를 새로 만들어 달라는 의미) System.in(키보드)
int tot = 0;
Scanner sc = new Scanner(System.in); // sc 변수는 키보드 입력을 받기 위한 변수
// 3번 반복
for(int i=1; i<=3; i++ ) {
// 문자열을 키보드로 입력받아서 str 변수에 저장
String str = sc.nextLine();
// 정수를 키보드로 입력받아서 num에 저장
int num = sc.nextInt(); // sc라는 변수를 사용하여 다양한 자료를 입력 받을 수 있음
// 숫자 입력 후 줄바꿈해야 문자열을 입력 받을 수 있음
sc.nextLine();
// 입력받은 숫자를 tot 변수에 누적하여 합산
tot = tot + num;
System.out.println(str + i);
}
// 문자, 정수 입력 3번이 반복돼야 합산된 숫자가 출력
System.out.println("정수 3개의 합계:"+tot);
}
// 키보드로 정수 5개 입력받아서 5개의 총점과 평균 구하기
int i = 0;
int tot = 0;
float avg = 0;
Scanner sc = new Scanner (System.in);
for (i=0; i<5; i++) {
int num = sc.nextInt();
tot = tot + num;
System.out.println(i);
}
avg = tot / i; // 평균은 합계 나누기 i 개수
System.out.println("정수의 합계:" + tot);
System.out.println("정수의 평균:" + avg);
앞서 했던 switch ~ case 와 Scanner를 결합하여 코드를 작성해 볼 수도 있다.
public static void main(String[] args) {
// switch ~ case 문
Scanner sc = new Scanner(System.in);
// 정수를 키보드로 입력받아 n1 변수에 저장
System.out.print("정수1:");
int n1 = sc.nextInt();
// 정수를 키보드로 입력받아 n2 변수에 저장
System.out.print("정수2:");
int n2 = sc.nextInt();
// 문자열을 키보드로 입력받아 str에 저장
System.out.println("add, sub, mul, div 중 하나 입력");
String str = sc.next();
// 정수형 변수 선언
int result = 0;
// 문자열 변수 선언
String cal=" ";
// 만약 str이 add 라면 n1+n2 계산한 값을 result에 저장
// 만약 str이 sub 라면 n1-n2 계산한 값을 result에 저장
// 만약 str이 mul 라면 n1*n2 계산한 값을 result에 저장
// 만약 str이 div 라면 n1/n2 계산한 값을 result에 저장
switch (str) {
case "add": result = n1 + n2; cal="+";
break;
case "sub": result = n1 - n2; cal="-";
break;
case "mul": result = n1 * n2; cal="*";
break;
case "div": result = n1 / n2; cal="/";
break;
default : result = 0;
break;
}
System.out.println(n1 + cal + n2 + "=" + result);
Math
Math 클래스는 수학에서 자주 사용하는 상수들과 함수들을 미리 구현해 놓은 클래스
- Math.random(): 0부터 1사이 실수를 무작위로 발생시키는 함수 ▶ int, float 으로 선언 시 오류
- Math.floor(): 소수점 이하는 무조건 버림
for (int i=0; i<3; i++) {
// Math.random(): 0부터 1사이 실수 무작위로 발생시키는 함수
double num = Math.random();
// Math.floor(): 소수점 이하 버림
double num2 = Math.floor(Math.random() * 10);
int num3 = (int)num2;
System.out.println("랜덤 실수:"+num);
System.out.println("랜덤 실수:"+num2);
System.out.println("랜덤 정수:"+num3);
}
// 무작위로 1~10의 정수를 5개 발생시킨 후,
// 해당 정수 중 짝수의 합만 출력
int tot = 0;
int odd_num = 0;
for (int i=0; i<100; i++) {
// 1보다는 크고 10보다는 작은 수 출력 후 소수점 이하 버림
double num1 = Math.floor(Math.random()*10+1);
int num2 = (int)num1;
if(num2%2 == 0) {
odd_num ++;
tot = tot + num2;
System.out.println("무작위 짝수:" + num2);
// 무작위 짝수의 개수가 5개면 for 문 빠져나감.
if (odd_num == 5) {
break;
}
}
}
System.out.println("------------");
System.out.println("무작위 짝수의 합계:" + tot);
다음 내용
'프로그래밍 및 기타 > Java' 카테고리의 다른 글
[Java] 자바 기초 - 배열 (0) | 2025.01.07 |
---|---|
[Java] 25년 1월 8일 자바 기초 - 문자열 (0) | 2025.01.07 |
[Java] 25년 1월 3일 - 자바 기초 (반복문) (0) | 2025.01.03 |
[Java] 25년 1월 2일 - 자바 기초 (변수, 연산자) (0) | 2025.01.02 |
[Java] Java 개념, Java를 위한 프로그램 설치 (1) | 2024.12.31 |