Welcome to

My Java Develop Space

Java portfolio from H.Y.Song Welcome to my development space!

All posts

레이블이 문자열인 게시물을 표시합니다. 모든 게시물 표시
레이블이 문자열인 게시물을 표시합니다. 모든 게시물 표시

[5] if 조건문

글을 시작하며
 간혹 스크립트를 작성하면서 조건을 걸고싶어질때가 있다. 예를 들면 로그인처럼 아이디와 비번이 있으면 그 안에 있는 컨텐츠를 볼 수 있다던지... 특정한 숫자를 입력받으면 그마다 다른 명령을 수행한다던지.. 이번에는 그것에 관해서 써 보려 한다.
용도
 특정 저장된 데이터를 불러들임, 판단 후 조건에 대입하여 특정 명령을 수행한다.
문법
숫자일 경우
if(데이터==원하는 데이터 값){
}
문자일 경우
if(데이터.equals(데이터 또는 "데이터 값")){
}
설명
 예를 들어 i 라는 int 의 메모리가 있다. i 에는 3이라는 값이 있고, 조건문은 5를 요구한다. 조건문이 실행이 되면 i 메모리에 있는 값을 가져와 조건문이 요구하는 값과 비교하여 조건을 충족하는 스크립트를 실행하게 된다. 조건문이 요구하는 값은 다른 메모리 값이 될 수도 있다.

 - 연산자
== : 같으면
<= : 같거나 앞에있는 값이 뒤에있는 값보다 작으면
>= : 같거나 뒤에있는 값이 앞에있는 값보다 작으면
< : 뒤에 있는 값이 앞에있는 값보다 크면
> : 앞에 있는 값이 뒤에있는 값보다 크면

예제1
public class EX{
    public static void main(String[]args){
        int i = 30
        if(i==30){
            System.out.println("i=30");
        }
    }
}



출력 결과:
i=30 


그런데 만약 입력된 데이터 값이 요구된 값과 다르다면? 어떻게 해야할까? 그리하여 쓰이는게 else 와 else if 이다.

else 문
예제2
public class EX{
    public static void main(String[]args){
        int i = 40
        if(i==30){
            System.out.println("i=30");
        }else{
            System.out.println("i=Not 30");
        }
    }
}




출력 결과:
i=Not 30


else 문은 개념적으로 1 아니면 0 이다. 맞느냐 틀리냐만 다른건데, else if 는 하나 이상의 조건을 넣을 수 있다.

예제3
public class EX{
    public static void main(String[]args){
        int i = 40
        if(i==30){
            System.out.println("i=30");
        }else if(i<30){
            System.out.println("i<30");
        }else if(i>30){
            System.out.println("i>30");

        }
    }
}





출력 결과:
i>30

이렇게 여러가지 조건을 넣을 수 있다. if 를 두번이나 세번 쓸 수 있지만, 필자는 컴퓨터를 위해 그것보다는 else if 를 추천한다. if 를 여러번 쓰면 컴퓨터는 모든 if 문들을 거쳐가게 된다. 그러나 else if 문은 하나만 충족하는게 있다면 그것만 출력/수행하게 된다.


[4] 입력 받기



용도: 사용자가 키보드로 입력한 데이터를 받아서 저장한다.
문법: (여러줄)
설명: import java.util.Scanner; 을 이용하여 java.util 에 있는 Scanner 클래스를 불러들인다. 그리고, Scanner 메서드 이름 = new Scanner(System.in); 으로 메서드를 생성한다. 그리고 (데이터 타입) (할당 이름) = (메서드 이름).next(데이터 타입)(); 으로 입력을 받는다. 필자는 메서드 이름을 주로 input 으로 하여 Scanner input = new Scanner(System.in); 으로 쓴다. 
                 int 는 int (할당 이름) = input.nextInt();
        double 은 double (할당 이름) = input.nextDouble();
        String 은 String (할당 이름) = input.next();
        String 은 String (할당 이름) = input.nextLine(); 
   *차이점: next(); 은 스페이스바를 문자 처리 하지 않고 스페이스 뒤의 문자는 무시해 버리지만, nextLine(); 은 스페이스바를 포함한 모든 문자열을 저장한다. 필자는 주로 nextLine(); 을 이용한다.
예제: 
import java.util.Scanner;
public class EX{
    public static void main(String[]args){
        Scanner input = new Scanner(System.in);
        System.out.println("숫자데이터를 입력하세요");
        int numdat = input.nextInt();
        System.out.println("숫자데이터를 입력하세요");
        String sdat = input.nextLine();
        System.out.println("저장된 데이터: " + numdat + ", " + sdat);
    }
}

오류: 그런데 이렇게 작성을 하였을때 String에서 받는 데이터는 아무것도 없게 된다. 이유는 int 에서 받은 엔터를 문자처리 하여 sdat 공간에 넣어버리는 것이다. 그렇기 때문에 제대로 된 입력을 받기 위해서는 Integer 라는 클래스 메서드를 이용해야 한다. 새로운 예제는 이러하다: 

import java.util.Scanner;
public class EX{
    public static void main(String[]args){
        Scanner input = new Scanner(System.in);
        System.out.println("숫자데이터를 입력하세요");
        String ndat = input.nextLine();
        int numdat = Integer.parseInt(ndat);
        System.out.println("문자데이터를 입력하세요");
        String sdat = input.nextLine();
        System.out.println("저장된 데이터: " + numdat + ", " + sdat);
    }
}

이렇게 하면 Integer.parseIntndat 의 숫자값을 추출해 내어 numdat 에 저장하게 된다. 물론 엔터는 문자처리를 하지 않는다.


출력 결과: 
숫자데이터를 입력하세요
123
문자데이터를 입력하세요
abcd
저장된 데이터: 123, abcd

Process finished with exit code 0

[2] 자바 출력하기


1. 자바의 문자열 출력은 String 이라는 클래스로부터 나온다.
2. 우리가 굳이 String을 작성할 필요는 없다.
3. 자바의 문자열 출력 명령어는 System 이라는 클래스에 기반을 둔다.
System.out.print("");     
System.out.println("");  
System.out.printf("",""); 
4. 이것들은 모두 문자열을 출력하는 명령줄이다.
5. 작성방법:
System.out.print("출력할 내용");         
System.out.println("출력할 내용");      
System.out.printf("%s","출력할 내용");

System.out.print("출력할" + "내용");           
System.out.println("출력할 " + "내용");       
System.out.printf("%s%s","출력할","내용");

System.out.print("출력할 내용");         
System.out.println("출력할 내용");      
System.out.printf("%s","출력할 내용");

6. 속성
\n: 엔터키 역할을 한다. 이것 대신에 System.out.println(); 을 적어도 되지만 필자는 비추다. print문에 "" 사이에 넣어야 된다.
\t: 탭 키 역할을 한다. 필자는 실제로 작성중 탭키보다 이것을 사용하는것을 추천한다. 가끔가다 탭을 친 만큼의 공간이 깨지기도 한다. print문에 "" 사이에 넣어야 된다.

%s: 문자열
%d: 숫자열
%f: 숫자

7. 추천
필자는 주로 System.out.println();을 주로 쓴다. 굳이 \n 을 쓰거나 printf 처럼 %~ 를 쓰지 않아도 되어서 개인적으로 편하다... 하지만 편리성의 결정은 각자의 나름이다.

예제:
public class EX{                                         
    public class void main(String[]args){     
        System.out.print("출력할 내용");        
        System.out.println("출력할 내용");     
        System.out.print("%s","출력할 내용");
    }                                                             
}                                                                 

출력 결과:
출력할 내용
출력할 내용
출력할 내용