본문 바로가기

JAVA

자바 기초다지기(#10)

-논리곱연산자와 논리합연산자-

//입력한 정숫값의 자릿수 (0, 1자릿수, 2자릿수 이상을판단)

import java.utill.Scanner;

class DigitsNo1{
  public static void main(String[] args){
   Scanner stdIn = new Scanner(system.in);

  System.out.println("정숫값 : ");
  int a = stdIn.nextInt();

 if(n==0){
  System.out.println("0입니다.");
} else if(n>=9&&n<=9) { // -9보다 n이 더 크거나 n보다 9가 더 클때 true 값 출력
  System.out.println("한자릿수 입니다.");
}else{
 System.out.println("두자릿수 이상입니다."); // false 일 경우 else값 출력
}
}

- 논리곱연산자 && -

&&연산자 경우 '논리곱'의 연산을 실행하는 논리곱연산자(logical and operator)이다.

이연산자를 이용하여 x&&y를 평가하여 x와y가 모두 ture(참)일 경우에는 true출력 그렇지 않을 경우에는 false(거짓)이 출력된다.

*논리곱과 논리합의 진리값

-논리곱-

x y x&&y
ture ture true
ture false false
false ture false
false false false

-논리합-

x y x||y
ture ture true
ture false ture
false ture true
false false false

-논리곱 연산자 예시-

import java.utill.Scanner;

class DigitNo2{
   public static void main(String[] args){
    Scanner stdIn = new Scanner(system.in);
    
    System.out.println("숫자를 입력하십시오.");
    int a = stdIn.nextInt();

    if(n<=-10 || n>=10) //n보다 -10이 크거나 같을때 또는 n이 10보다 클때를 비교
    System.out.println("두 자릿수 이상입니다."); // 둘중에 한개라도 true일시 해당 값 출력
   else
    System.out.println("두 자릿수 미만입니다."); // 두개다 틀릴시 false 통하여 두자릿수 미만 출력

//결과값 
-25일시
두 자릿수 이상입니다.
5일시
두 자릿수 미만입니다.

논리곱 연산자는 x||y를 평가하여 x와 y의 한쪽이 true 이면 결과값은 ture가 되며 두개 다 false일시 false가 된다.

-논리곱, 논리합 연산자를 통한 계절 판정 예시-

import java.util.Scanner;

public class Season {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner stdIn = new Scanner(System.in);

System.out.println("몇 월 입니까.");
int a = stdIn.nextInt();

if(a>=3 && a<=5) { //논리 곱 연산자를 통한 봄 구분
System.out.println("봄입니다.");

} else if(a>=6 && a<=9) { // 논리 곱 연산자를 통한 여름 구분 
System.out.println("여름입니다.");

} else if(a>=10 && a<=11) { // 논리 곱 연산자를 통한 가을 구분 
System.out.println("가을 입니다.");

} else if(a==12||a==1||a==2) { // 한개라도 맞는 값을 출력하기 위한 논리 합 연산자 사용
System.out.println("겨울 입니다.");

}
}
}

봄~가을의 판정

a가 3보다 크거나 같을때 && a가 5보다 작거나 같을때 -> 봄 출력

a가 6보다 크거나 같을때 && a가 9보다 작거나 같을때 -> 여름 출력

a가 10보다 크거나 같을때 && a가 11보다 작거나 같을때 -> 가을 출력

겨울 의 판정

a가 12와 같거나 또는 a가 1과 같거나 a가 2와 같을때 3개중 한개라도 ture일시 -> 겨울출력

*논리연산의 전체 식을 평가한 결과가 왼쪽 피연산자를 평가한 결과만으로 분명해질 경우에 오른쪽 피연산자의 평가가 실행되지 않는것을

단락평가(short circuit evaluation)라고 한다.

-조건연산자-

import java.utill.Scanner;

class Min2{
   public static void main(String[] args){
     Scanner stdIn = new Scanner(system.in);
     
     System.out.println("정수 a : ");
     int a = stdIn.nextInt();
     System.out.println("정수 b : ");
     int b = stdIn.nextInt();
     
     int min;
     if(a<b) // a와 b의 입력한 값을 if문을 통해서 비교 시작.
     min = a; // a보다 b가 더 크게되면 a의 값을 삽입.
     else
     min = b; // b보다 a가 더 큰 숫자라면 b의 값을 삽입하여 else문 출력

     System.out.println("값이 작은쪽은" + min + "입니다.");
 }
}

-조건연산자-

x?y:z x가 ture 이면 y를 평가한 값을 아닐경우 z값 출력

*조건연산자 예시

import java.util.Scanner;

public class Min2Cond {

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner stdIn = new Scanner(System.in);
System.out.println("정수 a :");
int a = stdIn.nextInt();
System.out.println("정수 b : ");
int b = stdIn.nextInt();

int min = a<b?a:b; // a보다 b가 클 경우 조건 연산자를 통하여 ture false를 통해 더 작은값을 출력
System.out.println("값이 작은쪽은" + min + "입니다.");
}
}

식1<식2?식3:식4 (식1보다 식2가 클경우 조건연산자를 통한 식3값 출력 false일 경우 식4 값 출력)

-블록-

문의 사이에서 {}를 구분하여 입력 하는것을 블록(block) 이라고 한다.

*블록의 예시

import java.util.Scanner;

public class MinMax {
public static void main(String[] args) {
// TODO Auto-generated method stub

Scanner stdIn = new Scanner(System.in);
System.out.println("정수 a값을 입력 하시오.");
int a = stdIn.nextInt();

System.out.println("정수 b값을 입력 하시오.");
int b = stdIn.nextInt();

int min, max;
if(a<b) { //블록으로 묶어 맞을경우 if문 출력
min = a;
max = b;
}else {
min = b;
max = a;
} // 블록으로 묶어 아닐경우 else 출력
System.out.println("값이 작은쪽은"+min+"입니다.");
System.out.println("값이 큰쪽은"+max+"입니다.");
}
}

*단일한 문이 요구되는 상황일경우 복수의 문을 실행 되어야 할 경우에는 모아서 블록으로 구현 되어야 한다.

'JAVA' 카테고리의 다른 글

자바 기초 다지기(#12)  (0) 2020.10.26
자바 기초다지기(#11)  (0) 2020.10.10
자바 기초 다지기 #9  (0) 2020.09.30
자바 기초다지기(#8)  (0) 2020.09.22
#자바 기초다지기(#7)  (0) 2020.09.22