return은 원래 메소드 내에서 실행한 내용의 결과값을 반환하는 역할인데, 

메서드를 빠져나가고 싶을 때 마치 파이썬의 break문처럼 쓸 수 있다.

 

이 경우 return을 만나면 바로 메서드가 종료되기 때문에 return값이 반환되지는 않는다. 

public class SampleMethod {
void sayNick(String nick) {
    if ("바보".equals(nick)) {
        return;  
        //메서드를 빠져나가고 싶을 때 return을 사용하는 방법이다.
        //실제로 return 값이 있는 것은 아니며, 리턴 자료형이 void인 메서드에서만 가능.
    }
    System.out.println("나의 별명은" +nick+ "입니다");

    }

    public static void main(String[] args) {
        SampleMethod SampleMethod = new SampleMethod();
        SampleMethod.sayNick("야호");  
        //야호 equals nick은 sayNick 메서드의 조건문을 만족시키지 못함. --> 메서드를 빠져나가지 않고 문자열을 출력.
        SampleMethod.sayNick("바보");  
        //바보==nick은 조건문을 만족시켜서 바로 메서드를 빠져나감 --> 문자열 출력하지 못하고 종료
    }

}
 
 
 

//출력값: 나의 별명은 야호 입니다.

 

<메서드 개요>

메서드는 함수가 없는 자바의 함수라고 할 수 있다. 

그런데 자바에서는 프로그래밍을 할 때 반드시 메소드를 사용할 수밖에 없다. 
어떤 프로그램을 만들더라도, 클래스 안의 메소드 안쪽에다가 하고 싶은 것을 적어야만 함.


메서드는 다음과 같은 형식을 따른다. 

예시)
public static void main(String[] args) {

}

 

(메서드를 정의하려면 메서드이름() 이후에 중괄호를 적고 중괄호 안에 메서드가 실행할 내용을 적으면 된다. )

 


아무튼 저 위의 코드에서는 main이 메소드의 이름인데, main이라는 것은 자바와 개발자 사이에 맺어진 약속이다.
(약속: 하고 싶은 작업이 있으면 main이라는 이름을 가진 메소드의 본문에다가 그 작업에 해당하는 코드를 위치시켜라.)

--->자바가 실행될 때 바로 main이라는 메소드가 호출되도록 만들어져 있다. 


# 다른 특징들:

  • 하나의 클래스에 메소드가 두 개 이상 있을 수 있다.
  • 메소드 안쪽의 내용 부분에서, 다른 메소드를 호출할 수도 있다.
  • 메소드이름(); 이렇게 적으면 그 메소드를 호출하는 것이고, 중괄호 안쪽 본문에 해당하는 내용이 실행된다.
  • 메소드는 반복해서 여러 번 호출할 수 있다. 

 


메소드의 장점: "재활용"을 잘 할 수 있게 해 줌. 유지 보수가 용이함. 코드 양이 줄어듦. 

 

코드를 읽는 요령: 

메소드의 정의 부분을 먼저 보지 말고, 안의 내용을 먼저 봐라. 

그리고 입력값, 출력값을 확인하는 것이 메소드를 이해하는 데 많은 도움이 된다. 

 

 



<메소드의 입력과 출력>

 

메서드의 입력/ 출력값은 있을 수도 없을 수도 있다. 

그런데 이 입력값, 출력값을 잘 설정하면 메서드의 존재 이유와도 같은 재사용성을 높일 수 있기 때문에 아주 중요하다. 

 

내용은 거의 동일한데 실행할 때마다 살짝 다른 결과를 도출해야 하는 경우라고 하자.

이런 약간의 변경사항 때문에 우리는 메서드의 동작 방식을 살짝 바꾼 새로운 메서드를 만어야 할 수 있다.

그런데 이런 유사한 메서드를 100개, 200개 만들어야 한다면 그건 메서드가 좋은 부품으로서의 기능을 하지 못하는 것이다. 한마디로 재활용성이 떨어지는 메서드가 된다. 

하지만 만약,

어떤 값을 입력했을 때 그 입력값에 따라서 출력값이 달라진다면 ,

비슷한 메소드를 굳이 만들지 않아도 입력값을 바꿈으로서 출력값에 변화를 줄 수 있다.

입출력값을 잘 설정하는 것은 메서드의 재활용성을 높이는 좋은 방법이다.

 

 



1) 입력값


매개변수, 인수를 통해서 입력을 한다. 

ex)

매개변수가 int limit인 메서드

의 내용이 { limit 값보다 작을 때까지 반복되는 while문 }인 경우: 

 

거기에 어떤 인자를 넣느냐에 따라서 출력값이 달라진다. 
인자가 4면 3번만 돌아가고 인자가 10이면 9번 돌아가는 것. 
+메소드의 이름(Numbering) 뒤에, 괄호 안에 limit이라는 변수를 저장했고, int를 앞에 적어줌으로써 정수만 받겠다는 의미를 담음.
 
다른 메서드에서 Numbering 메소드를 호출하기 위해서 Numbering(9)이런 식으로 쓰면

이 괄호 안에 담긴 9가 int litmit에 담기게 되는 것이다. 

 

Numbering메서드는 변수 안에 괄호 안의 숫자를 넣고 실행된다. limit이 숫자로 치환돼서 그거에 맞게 로직이 돌아가는 것이다. 


만약에 메서드 정의에서 괄호 안에 아무것도 없으면?
그럼 메소드의 내용(중괄호 안)에다가 이제 int limit=5 이런 식으로 쓰면 된다.

이렇게 했을 때의 문제는 메소드의 내용에 가변성이 늘어난다는 것이다. 지속적인 수정이 요구되어서 번거롭다. 


반면 Numbering (int limit)이라고 정의했을 때는 고정적인 영역에 둘 수 있음. 
그렇게 하고 메소드를 호출할 때마다 넘버링() 괄호 안에다가 전달할 값을 다르게 주면 된다. 

가변성이 있는 영역을 아주아주 좁게 만든 것이다. 

*참고

int limit이나 인수 5 나 둘 다, 입력값을 위한 도구이다. 그런데 int limit은 매개변수(parameter)라고 하고, 5 등은 인자(argument)라고 한다. 

- 매개변수는 입력값을 저장하는 공간, 변수를 의미한다 (int a, int b 등)
- 인수는 메서드를 호출할 때 전달하는 입력값 자체를 의미한다 (3, 4 등)
(근데 흔하게 혼용되는 용어이긴 함)


암튼 메서드를 호출할 때마다 인자를 주고,

그 인자를 매개변수에다 대입해서 세팅할 수 있게 되면,

메소드의 재활용성이 높아진다. 

 

 

 

→ 0부터 limit까지 출력하고 싶을 때는 그렇다. 그런데 만약 매가 지정한 값부터 ~ limit까지 출력하고 싶을 때는?

 

매개변수를 하나 더 늘리면 된다. 
numbering(int init, int limit); 처럼.
그리고 이 메소드를 호출할 때 numbering(3, 5)이런 식으로 인자를 넣어주면 된다.  3은 init에, 5는 limit에 들어감. 

 

 

 

2) 출력값

 

return: 메소드가 동작된 결과를 메소드 밖으로 돌려준다는 뜻이다. 


public static String numbering(int init, int limit);

numbering이라는 메소드는 입력값으로 1, 5를 받고 있다. 

메소드 이름 앞에 붙은 String은, 그 메소드가 리턴할 값이 반드시 문자열이라는 것을 의미한다. 

그래서 이 메소드를 호출할 때 result 앞에도 String을 붙여줘야 함.

 

      # void는 무엇인가?

     빈 공간. 공허. 이런 뜻을 가진 void가 메소드 이름 앞에 붙으면, 이 메소드는 return 값이 없다는 것을 의미한다.

 

 

 

{ 메서드 내용 중

String result = numbering (1, 5); 이런 게 있다.

 

result는 문자열을 담을 수 있는 변수이고

여기에다가 numbering이라는 메소드가 1, 5를 인자로 받았을 때 나오는 결과를 담으라는 뜻이다.   

1과 5라는 값은, 메소드에서 각각 init과 limit에 담긴다. 
그리고 String output = "" 이라는 빈 문자열을 정의한다. 

while문이 실행되는 동안 i의 값이 아웃풋에 계속 더해진다. 1, 2, 3, 4 가 아웃풋에 순차적으로 붙음. 아웃풋은 숫자가 아니라 "문자열" 이니까 10이렇게 더해지는 게 아니라, 그냥 1234가 됨.

 

그리고 이 아웃풋을 return을 통해 메소드 바깥으로 내보내짐. }

 


이렇게 하면 바깥 main 메소드의 result 값에 1234가 담기게 되는 것이다. 

 

이전에 살펴본 예제는 result라는 변수나 출력하는 코드 없이 끝났는데,

여기서는 result 값을 만들고, 화면에 출력(print)하는 내용도 바깥쪽으로 나와 있다.

대신에 메소드 안에는 return만 있음.

 

" 위와 같이 매번 입출력의 형식을 지정해야 한다는 점은 귀찮고 어려운 일일 수 있다.
특히 고급 프로그래밍 언어인 파이썬 등을 사용하던 사람들은
이렇게 고정되어있는 형태가 억압적이라고 생각할 수도 있다. 

그러나 모든 일에는 장단이 있는 법이다. 
Java에서는 메소드가 리턴하는 값이 고정되어 있기 때문에,
메소드가 리턴하는 값이 스트링일지 아닐지 고민하지 않아도 된다는 장점이 있다. 
다른 언어와 달리, 문자열을 리턴할지, 숫자를 리턴할지 체크하는 조건문 같은 것을 생략할 수 있다. 
유연성을 버린 대신 예측가능성을 얻은 것.
이런 다면성을 인지하고 있어야 좋은 프로그래밍을 할 수 있다. "

 


3) 굳이 return값을 써야 하는 이유?

 

 

메소드의 부품으로서의 가치를 높이기 위해서이다. 


메소드의 결과는 화면에 출력할 수도 있지만 이메일로 보내야 할 때도 있고 파일로 기록해야할 수도 있다.

메소드가 해야 할 일은 결과를 내는 것까지. 
return을 통해 결과를 밖으로 내보내고 나면, 
내용이 같은데도 불구하고 출력 방법이 다르다는 이유로 각기 다른 여러 개의 메소드를 따로 만들 필요가 없다. 

결국 메서드의 재사용성. 부품으로서의 가치를 극대화하기 위해서 return 기능을 사용하는 것이다.

 

 

 


그렇게 해서 만들어진 코드가 바로.....

public static void main(String[] args) {


String result = numbering(1, 5);


System.out.println(result);


}

여기서 보면 프린트하는 부분을 이메일로 보내는 부분으로, 또는 파일에 저장하는 부분으로 바꾸기가 참 쉽다. 

메소드는 하나도 건드리지 않고도!

 

 



4) return의 특징

 


1. 리턴을 만나면 리턴값을 반환한 뒤 메소드가 종료된다.

 


2. 로직의 흐름에 따라서 리턴값은 한 메소드에 여러 개 있을 수 있다.

 

ex)

if - else if - else 문에서는 서로 다른 리턴값 중 어떤 한 개가 실행되는 시점에 메소드가 종료된다. 

 

 


3. 리턴값 여러 개를 리턴하고 싶을 때는 배열을 써먹으면 된다.

 

배열은 메소드와 밀접한 관계를 갖는다.

입력값이나 출력값을 배열로 만들 수 있으므로 배열에 복수의 값을 담은 뒤에 한 번에 입력, 리턴하면 된다. 


이럴 때는 메소드 정의를 이렇게 한다. 
public static String[ ] get members( ) {  

 

(내용) 

 

 }

 

---> String[ ]를 자료형으로 하는 결과값을 갖는 메소드.

 

 

 

 

위의 글은 유튜브 <생활코딩> - JAVA method 강의 내용을 정리한 것입니다. 

JAVA method - 1. 수업소개 (youtube.com)

 

JAVA method

 

www.youtube.com



 
class Animal {
    String name; // 이렇게 클래스에 선언된 변수를 객체 변수(속성)라고 한다.
   
    public void setName(String name) {
        //Animal 클래스에 setName 메서드를 추가했다.
        //입력은 문자열로 name을 받고, 출력은 void(없음)
        this.name = name;
        // 만약 이후에 cat이라는 인스턴스에서, cat.setName("bob")이라고 하면
        //여기서 변수에 들어간 "bob"이 다른 객체가 아니라 이 객체,
        //cat 객체의 name이 된다는 뜻이다.
    }
}


public class Sample6 {
    public static void main(String[] args) {
        Animal cat = new Animal() ;  
        //cat이라는 객체는 Animal 클래스의 인스턴스이다.
        cat.setName("bob")

        Animal dog = new Animal() ;
        dog.setName("hee")

        System.out.println(cat.name);
        System.out.println(dog.name);
       
    }
}

 

 

System.out.println(cat.name);               //bob

        System.out.println(dog.name);       //hee

 

위의 출력값에서 알 수 있듯, 

Animal 클래스 안의 각각의 인스턴스에서 객체변수의 값 name은 독립적으로 유지된다.

 

이 기능은 클래스의 존재 이유이기도 하다.

 

1. 인스턴스 

클래스 내의 메서드는 필요할 때마다 쓰면 되는 일회용 기능 같은 것.
근데 인스턴스는 뭔가 일시적인 게 아니라, 새로운 복제본 그 자체의 맥락을 계속 이어갈 수 있다.
일회용으로 작업을 끝내면 되는 것들은 메서드나 변수를 클래스에 있는 그대로 이용하지만,
긴 맥락으로 작업해야 하는 경우에는 클래스를 직접 사용하지 않고, 복제본을 만들어서 이용하는 것이다.

 

 

선언하는 방법: 

" 클래스 이름" "인스턴스 이름" = new "클래스 이름"();

 

예시:

Print p1 = new Print();

 


class Print{
    public String delimiter = "";

    public void A() {
        System.out.println(delimiter);
        System.out.println("A");
        System.out.println("A");
    }

    public void B() {
        System.out.println(delimiter);
        System.out.println("B");
        System.out.println("B");
    }
}
public class Sample8 {
    public static void main(String[] args) {
        Print p1 = new Print();
        p1.delimiter = "----";
        p1.A();
        p1.A();
        p1.B();
        p1.B();

        Print p2 = new Print();
        p2.delimiter = "****";
        p2.A();
        p2.A();
        p2.B();
        p2.B();

        p1.A();
        p2.A();
        p1.A();
        p2.A();
    }
}

 

 

 

2. static

스태틱은 클래스 소속, 스태틱이 없는 것은 인스턴스 소속이라는 것을 기억하자.

 

1. 인스턴스들은 classVar랑 연결되어 있음. 한 인스턴스의 classVar를 변경하면 클래스의classVar, 그리고 같은 클래스에 있는 다른 instance의 값도 같이 변경된다. 

 

2. 각각의 instance 변수들( static 없는 것 )은 완전히 독립적이고, 자기 instance안에서만 뭔가 변하게 할 수 있음.

 

class Foo{
    public static String classVar = "I class var";
    public String instanceVar = "I instance var";
    public static void classMethod() {
        System.out.println(classVar);
      //System.out.println(instanceVar);  //Error. 클래스 메소드 안에서 인스턴스 변수에 접근 불가.
    }
    public void instanceMethod() {
        System.out.println(classVar);
        System.out.println(instanceVar); //인스턴스 메소드 안에서는 인스턴스 변수에도 접근 가능함.
    }
}
 
 
 
 
 
public class StaticApp {

    public static void main(String[] args) {
        System.out.println(Foo.classVar);  //OK
      //System.out.println(Foo,instanceVar); //Error
        Foo.classMethod();
      //Foo.instanceMethod(); //인스턴스 메소드이기 때문에 클래스를 통해 접근할 수 없음.

        Foo f1 = new Foo();
        Foo f2 = new Foo();

        System.out.println(f1.classVar); // I class var
        System.out.println(f1.instanceVar); // I instance var


        f1.classVar = "changed by f1";                   // f1 인스턴스의 classVar 를 변경했을 때
        System.out.println(Foo.classVar);              // class Foo의 classVar 변수도 변경됨. changed by f1
        System.out.println(f2.classVar);                 // f2 인스턴스의 classVar 변수도 변경됨. changed by f1

        f1.instanceVar = "changed by f1";             // f1 인스턴스의 instanceVar를 변경했을 때
        System.out.println(f1.instanceVar);           // f1의 instanceVar 변수 변경됨. changed by f1
        System.out.println(f2.instanceVar);           // f2의 instanceVar는 변경 안 됨. 그대로 있음 == I instance bar
      //System.out.println(Foo.instanceVar);          //이런 건 존재 X
        }  
}

 

 

 

https://www.youtube.com/playlist?list=PLuHgQVnccGMAb-e41kXPSIpmoz1RvHyN4

 

JAVA 객체지향 프로그래밍

 

www.youtube.com

[출처: 생활코딩 - 유튜브 강좌]

클래스를 사용하는 객체지향 프로그래밍의 장점:

코드의 관리가 쉽고, 재사용성이 높다.

 

 

 

아래의 예시를 통해 클래스의 장점을 살펴보자. 

 

첫 번째 클래스 : Print 클래스. 

 

1. 변수로 delimiter를 선언 

2. 메소드 A: delimiter, "A", "A"를 한 줄에 하나씩 출력하는 메소드

3. 메소드 B: delimiter, "B", "B"를 한 줄에 하나씩 출력하는 메소드

↓ ↓ ↓ ↓ ↓

class Print {
 
 
    public static String delimiter = "";       #1
 
    public static void A() {                        #2
    System.out.println(delimiter);
        System.out.println("A");
        System.out.println("A");
    }
 
    public static void B() {                       #3
        System.out.println(delimiter);
        System.out.println("B");
        System.out.println("B");
    }
 
 
}

 

 

 

 

두 번째 클래스: Sample 클래스.

 

1. delimiter변수에 "----"를 넣은 후  Print 클래스를 4번(메소드 A,A,B,B) 호출하고,

2. delimiter변수에 다시  "****"를 넣은 상태로 Print 클래스를 4번 호출한다.

 

ex) delimiter = "----"라고 선언했을 때

Print.A(); 의 출력값은 Print 클래스의 A메소드의 내용에 따라, 

----

A

A

가 된다. 

 

    


public class Sample {
 
 
    public static void main(String[] args) {
        Print.delimiter = "----";             #1
        Print.A();
        Print.A();
        Print.B();
        Print.B();

        Print.delimiter = "****";            #2
        Print.A();
        Print.A();
        Print.B();
        Print.B();
    }
    //..
 
 
}

 

 

먼저 위의 코드에서는 클래스 내부에 메소드를 만들어서 같은 동작을 쉽게 반복할 수 있게 하였다.

 

또한 delimiter라는 변수를 설정해서 매번 ---- 나 ****를 반복적으로 입력하지 않아도  그 값을 불러올 수 있게 했다.

 

 

클래스 단계에서는,

Print 클래스와 Sample 클래스를 구분하여

delimiter와 delimiter를 포함한 내용을 출력하는 메소드를 묶어서 하나의 그룹으로 만들었다. 

 

 

만약 두 클래스가 구분되지 않았다면 delimiter-A-A를 프린트하지 않는 연관없는 코드가 많아질 경우

Print클래스의  delimiter-A-A, delimiter-B-B를 출력하는 메소드와

Sample 클래스에서 이 메소드를 사용해서 프린트하는 내용 간의 연관성을 한눈에 알아보기 힘들다. 

 

클래스를 구분함으로써 코드가 어떻게 작동하는지 한눈에 볼 수 있게 되고, 재사용과 관리가 용이해지는 것이다.

 

 

https://www.youtube.com/playlist?list=PLuHgQVnccGMAb-e41kXPSIpmoz1RvHyN4

 

JAVA 객체지향 프로그래밍

 

www.youtube.com

[출처: 생활 코딩 유튜브 강좌]

 

for each문은 배열의 원소들을 처음부터 끝까지 1씩 증가하면서 하나하나 꺼내서 실행하도록 해준다. 

반복문과 배열을 합친 것 같은 기능으로, for 문 처럼 조건문을 복잡하게 쓸 필요 없이 배열만 지정하면 됨.

 

 

public class Sample5 {
    public static void main(String[] args) {
        String[] numbers = {"one", "two", "three"};
        for(int i = 0; i<numbers.length; i++) {
            System.out.println(numbers[i]);
        }
 

*for문으로 이렇게 나타낼 것을

public class Sample5 {
    public static void main(String[] args) {
        String[] numbers = {"one", "two", "three"};
        for (String number: numbers) {
            System.out.println(number);
        }

 

for each로 나타낸 예시 1.

 

import java.util.ArrayList;
import java.util.Arrays;

public class Sample5 {
    public static void main(String[] args) {
        ArrayList<String> nums = new ArrayList<>(Arrays.asList("one", "two", "three"));
        for (String number : nums) {
            System.out.println(number);
        }
    }
}

 

for each로 나타낸 예시 2.

 

결과는 모두

 

one

two

three

 

로 같다.

 

 

public class Sample5 {
    public static void main(String[] args) {
        String[] numbers = {"one", "two", "three"};
        for(int i = 0; i<numbers.length; i++) {
            //for 문 조건문: for (처음 값; 조건문(그런 동안에 계속); 증가치)
            System.out.println(numbers[i]);
        }
 
 
 
 
 
 

        int [] marks = {90, 25, 67, 45, 80};
        for(int i = 0; i <marks.length; i++) {
            if(marks[i]>=60){
                System.out.println("축하합니다." + (i+1) + "번 학생은 합격입니다.");
            }else{
                System.out.println((i+1)+"번 학생은 불합격입니다.");
            }
        }
 
 
 
 
 
 

        for (int i = 0; i< marks.length; i++) {
            if (marks[i]<60){
                continue;           //불합격이면 아무 것도 출력하지 않고 넘어감.
            }else{
                System.out.println("축하합니다."+ (i+1)+"번 학생은 합격입니다.");
            }
        }
 
 
 
 
 
 
 
<반복문을 이용한 구구단 출력>

        for (int i=2; i<10; i++) {
            for (int j=2; j<10; j++){
                System.out.println(i + " x " + j + " = "+ (i*j));
            }
            System.out.println("");    //한 단이 끝나면 한 줄 띄우기
        }
 
 
 
출력 값:
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18

3 x 2 = 6
3 x 3 = 9
3 x 4 = 12
3 x 5 = 15
3 x 6 = 18
3 x 7 = 21
3 x 8 = 24
3 x 9 = 27

4 x 2 = 8
4 x 3 = 12
4 x 4 = 16
4 x 5 = 20
4 x 6 = 24
4 x 7 = 28
4 x 8 = 32
4 x 9 = 36

5 x 2 = 10
5 x 3 = 15
5 x 4 = 20
5 x 5 = 25
5 x 6 = 30
5 x 7 = 35
5 x 8 = 40
5 x 9 = 45

6 x 2 = 12
6 x 3 = 18
6 x 4 = 24
6 x 5 = 30
6 x 6 = 36
6 x 7 = 42
6 x 8 = 48
6 x 9 = 54

7 x 2 = 14
7 x 3 = 21
7 x 4 = 28
7 x 5 = 35
7 x 6 = 42
7 x 7 = 49
7 x 8 = 56
7 x 9 = 63

8 x 2 = 16
8 x 3 = 24
8 x 4 = 32
8 x 5 = 40
8 x 6 = 48
8 x 7 = 56
8 x 8 = 64
8 x 9 = 72

9 x 2 = 18
9 x 3 = 27
9 x 4 = 36
9 x 5 = 45
9 x 6 = 54
9 x 7 = 63
9 x 8 = 72
9 x 9 = 81
 
 
 
 
 
        for (int k=2; k<10; k++) {
            for (int l=2; l<10; l++){
                System.out.print(k*l+ " ");   //print로 한 줄 출력
            }
            System.out.println(""); //줄 바꾸기
        }
 
 
출력값: 
4 6 8 10 12 14 16 18
6 9 12 15 18 21 24 27 
8 12 16 20 24 28 32 36
10 15 20 25 30 35 40 45
12 18 24 30 36 42 48 54
14 21 28 35 42 49 56 63
16 24 32 40 48 56 64 72
18 27 36 45 54 63 72 81
 
 
 
 
    }
}

 

 

※ println은 개행(\n)을 포함해서 출력,  걍 print는 개행하지 않고 출력. 

 

 

public class Sample5 {
    public static void main(String[] args) {
 
        int treeHit = 0;
        while (treeHit < 10){
            treeHit++;
            System.out.println("나무를  " + treeHit + "번 찍었습니다..");
            if (treeHit == 10) {
                System.out.println("나무 넘어갑니다.");
            }
        }
 
 

        /*while (true) {
            System.out.println("Ctrl-C를 눌러야 while문을 빠져 나갈 수 있습니다.");
        }  ====== 무한루프!
        */
 
 
 

        int coffee = 10;
        int money = 300;

        while (money>0) {
            System.out.println("돈을 받았으니 커피를 줍니다.");
            coffee --;
            System.out.println("남은 커피의 양은" + coffee + "입니다.");
            if (coffee == 0) {
                System.out.println("커피가 다 떨어졌습니다. 판매를 중지합니다.");
                break;
            }
        }
 
 
 
 

        int c = 0;
        while (c<=10) {
            c++;
            if (c%2==0){
                continue;
            }
            System.out.println(c);
            }
            //continue는 while의 맨 처음 조건문으로 돌아가게 해준다.
        }  
    }

'JAVA' 카테고리의 다른 글

[점프 투 자바] for each 문  (1) 2024.02.01
[점프 투 자바] for 문  (0) 2024.02.01
[점프 투 자바] switch, case문  (0) 2024.02.01
[점프 투 자바] if 문  (0) 2024.02.01
[점프 투 자바] 자료형 - 형 변환  (0) 2024.02.01
public class Sample5 {
    public static void main(String[] args) {
        int month = 8;
        String monthString = "";
        switch (month) {
            case 1: monthString = "January";
                break;
            case 2: monthString = "February";
                break;
            case 3: monthString = "March";
                break;
            case 4: monthString = "April";
                break;
            case 5: monthString = "May";
                break;
            case 6: monthString = "June";
                break;
            case 7: monthString = "July";
                break;
            case 8: monthString = "August";
                break;
            case 9: monthString = "september";
                break;
            case 10: monthString = "October";
                break;
            case 11: monthString = "November";
                break;
            case 12: monthString = "December";
                break;
            default: monthString = "Invalid month";
                break;
        }
        System.out.println(monthString);

        //입력이 1이면 January, 12면 December 출력. 만약 1~12말고 다른 값이면 default 문장이 수행된다.
    }
}

'JAVA' 카테고리의 다른 글

[점프 투 자바] for 문  (0) 2024.02.01
[점프 투 자바] while 문  (0) 2024.02.01
[점프 투 자바] if 문  (0) 2024.02.01
[점프 투 자바] 자료형 - 형 변환  (0) 2024.02.01
[점프 투 자바] 자료형 - 상수 집합(enum)  (1) 2024.02.01
import java.util.ArrayList;
 

public class Sample5 {
    public static void main(String[] args) {
        int money = 2000;
        boolean hasCard = true;
        if (money >= 3000) {
            System.out.println("택시를 타고 가라");
        }else {
            System.out.println("걸어가라");
        }

    /*
     * && = and
     * || = or
     * !  = not
     */
 
 
 
 

        if (money>=3000 || hasCard) {
            System.out.println("택시를 타고 가라");
        }else {
            System.out.println("걸어 가라");
        }
        //돈이 3000원 이상 있음 or 카드가 있음 ==> 택시를 타고 가라
 
 
 
 
 

        ArrayList<String> pocket = new ArrayList<String>();
        pocket.add("paper");
        pocket.add("headphone");
        pocket.add("money");

        if (pocket.contains("money")) {
            System.out.println("택시를 타고 가라");
        }else {
            System.out.println("걸어가라");
        }
 
 
 
 
 

        if (pocket.contains("money")) {
            System.out.println("택시를 타고 가라");
        }else if (pocket.contains("card")) {
            System.out.println("택시를 타고 가라");
        }else {
            System.out.println("걸어 가라.");
        }

    }
}


+ Recent posts