자바 계산기 메소드 - jaba gyesangi mesodeu

[Java] 계산기 프로그램 본문

Fizzyelf 2020. 9. 29. 19:38

import java.util.Scanner;

public class Qu3_5 {

	public static void main(String[] args) {
		
		do{
		//5. 사용자로부터 정수를 입력 받아 변수 firstNum에 저장하여라
			Scanner sc = new Scanner(System.in);
			System.out.println("첫 번째 숫자를 입력해주세요");
			int firstNum = sc.nextInt();

		//6. 사용자로부터 부호를 입력 받아 buho에 저장하여라
			System.out.println("부호를 입력해주세요");
			String buho = sc.next();
		
		//7. 사용자로부터 정수를 입력 받아 변수 secondNum에 저장하여라
			System.out.println("첫 번째 숫자를 입력해주세요");
			int secondNum = sc.nextInt();
		
		//8. buho에 저장된 값이 '+'이면 add메서드, '-'이면 substract메서드
	    //  '*'이면 multiply메서드, '/'이면 divide메서드를 호출하고 결과를 출력하여라.
	    //   단. buho의 저장된 값이 위의 4가지 경우가 아니라면 '연산종료'를 출력하여라.
			Calc cl = new Calc();
			if("+".equals(buho)) {
				int add = cl.add(firstNum, secondNum);
				System.out.println("두 수의 합계 : "+add+"입니다.");
				System.out.println();
			} else if("-".equals(buho)){
				int substract = cl.substract(firstNum, secondNum);
				System.out.println("두 수의 차수 : "+substract+"입니다.");
				System.out.println();
			} else if("*".equals(buho)){
				long multiply = cl.multiply(firstNum, secondNum);
				System.out.println("두 수의 곱은 : "+multiply+"입니다.");
				System.out.println();
			} else if("/".equals(buho)) {
				float divide = cl.divide(firstNum, secondNum);
				System.out.println("두 수의 나누어 소수점 2번째 자리에서 첫쨰 자리까지 반올림한 결과는 : "+divide+"입니다.");
				System.out.println();
			} else {
				System.out.println();
				System.out.println("부호를 잘못 입력하셨습니다. 프로그램을 종료합니다");
				break;
			}
		} while(true);
		
	}

}
class Calc {
	//1. 두 개의 int타입 입력받아 두 인자의 합의 결과를  반환하는 인스턴스메서드 
	//  add를 구현 하여라.
	int add(int i , int k ){
		int result = i + k ;
		return result;
	}
	
	//2. 두 개의 int타입 입력받아 앞의 인자에서 뒤의 인자를 뺀 결과를 반환하는 
	//   인스턴스메서드 substract를 구현 하여라.
	int substract(int i, int k){
		int result = i - k;
		return result;
	}


	//3. 두 개의 int타입 입력받아 두 인자의 곱의 결과를 반환하는 인스턴스메서드
	//   multiply를 구현 하여라.
	//   단. overflow를 고려하여라.
	long multiply(int i, int k){
		long result = i * k ;
		return result;
	}


	//4. 두 개의 int타입 입력받아 앞의 인자를 뒤의 인자로 나누기한 결과를 반환하는
	//   인스턴스메서드 divide를 구현 하여라.
	//   단. 결과는 소수점 두 번째 자리에서 반올림하여 젓 번째 자리까지 표현 하여라.
	float divide(int i , int k){
		float result = (int)((float)i/k*10+0.5)/10f;
		return result;
	
	}
	

}

728x90

반응형

이번 시간에는 작성한 메서드를 호출하여 사용하는 방법에 대해 알아볼까 합니다.

메서드에 선언된 매개 변수가 있는지 없는지에 따라, 메서드 호출은

자바 계산기 메소드 - jaba gyesangi mesodeu

이와 같이 두 가지 방식으로 나뉩니다.

계산기를 호출하는 예제를 통해 메서드가 호출되는 방식에 대해 더 구체적으로 알아보겠습니다.

public class Main
{
	public static void main(String[] args) {
		Calculator mycal = new Calculator();
            mycal.power();
            System.out.println("계산기가 켜졌습니다.");
      
      		long result1 = mycal.add(5,3);
      		long result2 = mycal.subtract(5,3);
      		long result3 = mycal.multiply(5,3);
      		long result4 = mycal.divide(5,3);
      
      		System.out.println("add(5,3)= " + result1);
      		System.out.println("subtract(5,3)= " + result2);
      		System.out.println("multiply(5,3)= " + result3);
      		System.out.println("divide(5,3)= " + result4);
      
      		mycal.power();
     		System.out.println("계산기를 끕니다.");
	}
}

class Calculator{
	long add(long a, long b){
		long result = a+b;
		return result;
	}
	long subtract (long a, long b){
		return a-b;
	}
	long multiply(long a, long b){
		return a*b;
	}
	long divide(long a, long b){
		return a/b;
	}
	boolean power = false;
	void power(){
		power = !power;
	}
}

매개변수가 없는 power 메서드를 통해 계산기의 전원을 켰다 껐다 할 수 있었습니다.

그리고 계산을 하기 위해 입력하는 매개변수 2개를 덧셈, 뺄셈, 곱셈, 나눗셈 메서드에 넣어 각각의 연산 결과값 (나눗셈은 몫) 을 받을 수 있었습니다.

또한, 같은 클래스 내의 메서드끼리는 참조변수를 사용하지 않아도 서로를 호출할 수 있지만, static 메서드의 경우 같은 클래스 내의 인스턴스 메서드를 호출할 수 없습니다.

 

아래의 예제를 통해 경우의 수를 따져보도록 하겠습니다.

class C1{
    static int static_variable = 1;
    int instance_variable = 2;

    static void static_static(){
        System.out.println(static_variable);
    }

    static void static_instance(){
        // 클래스 메소드에서는 인스턴스 변수에 접근 할 수 없다. 
        //System.out.println(instance_variable);
    }

    void instance_static(){
        // 인스턴스 메소드에서는 클래스 변수에 접근 할 수 있다.
        System.out.println(static_variable);
    }

    void instance_instance(){        
        System.out.println(instance_variable);
    }

}

 

static 변수에 1, instance변수에 2를 지정했습니다.

클래스 메서드에서는 instance 변수에 접근할 수 없지만, 그 반대의 경우는 접근이 가능합니다.

같은 형태면 변수에 접근할 수 있는 건 따로 설명드릴 필요가 없을 것입니다.

이 내용을 구체화한 코드가 아래와 같습니다.

public class Main
{
	public static void main(String[] args) {
	 C1 c = new C1();

        // 인스턴스를 이용해서 정적 메소드에 접근 -> 성공
        // 인스턴스 메소드가 정적 변수에 접근 -> 성공 : 1
        c.static_static();

        // 인스턴스를 이용해서 정적 메소드에 접근 -> 성공
        // 정적 메소드가 인스턴스 변수에 접근 -> 실패
        c.static_instance();
        System.out.println("error");

        // 인스턴스를 이용해서 인스턴스 메소드에 접근 -> 성공
        // 인스턴스 메소드가 클래스 변수에 접근 -> 성공 : 1
        c.instance_static();

        // 인스턴스를 이용해서 인스턴스 메소드에 접근 -> 성공 
        // 인스턴스 메소드가 인스턴스 변수에 접근 -> 성공 : 2
        c.instance_instance();

        // 클래스를 이용해서 클래스 메소드에 접근 -> 성공
        // 클래스 메소드가 클래스 변수에 접근 -> 성공 : 1
        C1.static_static();

        // 클래스를 이용해서 클래스 메소드에 접근 -> 성공
        // 클래스 메소드가 인스턴스 변수에 접근 -> 실패
        C1.static_instance();
        System.out.println("error");

        // 클래스를 이용해서 인스턴스 메소드에 접근 -> 실패
        //C1.instance_static();
        System.out.println("error");

        // 클래스를 이용해서 인스턴스 메소드에 접근 -> 실패
        //C1.instance_instance();
        System.out.println("error");
	}
}
자바 계산기 메소드 - jaba gyesangi mesodeu

그리고 그 결과는 위와 같습니다.

이번 레터를 통해 메서드가 값을 return하는 방식에 대해 알아보았습니다.

다음 편에서는 메서드를 호출하는 방법에 대해 알아보겠습니다.

728x90

반응형

공유하기

게시글 관리

구독하기고기만두의 돈과 커리어 만들기

저작자표시 비영리 변경금지

  • 카카오스토리
  • 트위터
  • 페이스북

'study > Java' 카테고리의 다른 글

기본형/참조형 매개변수  (0)2021.08.22JVM의 메모리 구조  (0)2021.08.21자바Java 메서드 (2) – return  (0)2021.08.19자바Java 메서드 (1) – 정의와 구조  (0)2021.08.18자바 Java 선언 위치에 따른 변수의 종류  (0)2021.08.17