TOP
class="layout-aside-left paging-number">
본문 바로가기
프로그래밍 및 기타/Java

[Java] 25년 1월 7일 - 자바 기초(조건문, scanner)

by 기록자_Recordian 2025. 1. 7.
728x90
반응형
이전 내용
 

[JAVA] 25년 1월 3일 - 자바 기초

이전 내용 [JAVA] 25년 1월 2일 - 자바 기초◆ 새 프로젝트 만들기 New - java project - 프로젝트명: java_ex02 ◆ 클래스 만들기 java_ex02 - src - New - Class - Ex01 * 이클립스 다크모드 설정Window - Preferences - Gener

puppy-foot-it.tistory.com


조건문 (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] 25년 1월 7일 - 자바 기초이전 내용 [JAVA] 25년 1월 3일 - 자바 기초이전 내용 [JAVA] 25년 1월 2일 - 자바 기초◆ 새 프로젝트 만들기 New - java project - 프로젝트명: java_ex02 ◆ 클래스 만

puppy-foot-it.tistory.com

 

728x90
반응형