국비 Day 09 : Method

28801 단어 Java국비Java

예제

🌟예제1🌟

두 수를 이용해서 더 하는 프로그램을 작성하세요.
입력 계산, 출력을 함수로 따로 만들기
랜덤하게 숫자를 발생시키는 것도 함수로 처리

public class Test01 {
	public Test01() {
		// 기본생성자 함수
		// 생성자 함수는 반환값 타입을 기술하면 안된다.
		
		// 함수는 스스로 실행되는 경우는 없다
		// 랜덤한 두 정수 만들고
		int no1 = makeInt();
		int no2 = makeInt();
		
		// 계산하고
		int result = calc(no1, no2);
		
		System.out.print("1. 정수 두개 입력 : ");
		toPrint(no1,no2);
		System.out.print("2. 정수 세개 입력 : ");
		toPrint(no1, no2, result);
	}
	
	// 1 ~ 100 사이의 랜덤한 정수를 발생시켜서 반환해주는 함수
	private int makeInt() {
		// 속성은 필요할 경우에만 기술한다.
		
		// 반환값 변수
		int no = 0;
		
		// 랜덤하게 정수 만들어서 변수에 채우고
		no = (int)(Math.random() * (100 - 1 + 1) + 1);
		
		// 반환값 내보내기
		return no;
	}
	
	// 두 수를 입력받아서 계산해주는 함수
	public int calc(int no1, int no2) {
		// 매개변수는 여러개가 입력되면 , 를 사용해 나열한다.
		
		// 반환값 변수
		int result = 0;
	
		// 이 함수를 실행할 때 입력된 두 정수는 no1, no2 변수에 기억된다.
		// 이 변수에 기억된 데이터를 계산하면 된다.
		result = no1 + no2;
		
		return result;
	}
	
	// 두 수를 입력해주면 두 수의 계산 결과를 출력해주는 함수
	public void toPrint(int no1, int no2) {
		// 결괏값 변수
		int num1 = no1;
		int num2 = no2;
		
		int result = calc(no1, no2);
		
		// 출력
		System.out.println("두 정수 " + no1 + " 와(과) " + no2 + " 의 합은 "
        + result + " 입니다.");
//		return;	
// 이 명령을 기술하지 않아도 실행내용을 모두 실행했으므로 이 함수가 자동 종료가 된다.
		// 따라서 생략해도 상관이 없다.
	}
	
	public String toPrint(int no1, int no2, int result) {
		/*
		 참고 ] 
		   매개변수리스트에 정의된 변수는 이 함수 블록에서만 사용할 수 있는 지역변수
		 */
		
		/*
		 	함수의 오버로딩
		 		같은 이름으로 함수를 한 클래스 내에 추가하는 방법
		 		
		 		원칙 ]
		 		0. 함수에 오버로딩 하려는 함수가 있어야 한다.
		 		1. 함수 이름이 같아야 한다.
		 		2. 매개변수리스트가 달라야 한다.
		 		(매개변수리스트의 타입, 순서, 갯수 중 하나 이상이 달라야 한다.)
		 		3. 반환값 타입과는 무관하다.
		 */
		
		// 출력
		System.out.println("두 정수 " + no1 + " 와(과) " + no2 + " 의 합은 "
        + result + " 입니다.");
		
		return null;
	}
	
	public static void main(String[] args) {
		new Test01();
	}
}

🌟예제2🌟

public class Test02 {
	int num;

	public Test02() {
		setNum();	// 전역변수에 저장해서 반환값 필요없음
		System.out.println(num);
	}
	
	public void setNum() {
		int no = (int)(Math.random() * 10 + 1);
		num = no;
	}

	public static void main(String[] args) {
		new Test02();
	}
}

연습문제

👑연습문제1👑

문자열로 정수로 된 계산식을 입력하면 기호에 맞는 연산을 해서 출력해주는 프로그램을 작성하세요.
+, -, *, /, % 각 연산은 함수로 분리해서 처리하세요.
입력, 출력, 계산을 모두 분리해서 함수로 만들어서 하세요.

import java.util.*;
public class Ex01 {
	String[] fomula = new String[3];
	public Ex01() {
		Scanner sc = new Scanner(System.in);
		inputNo(sc);
		toPrint(calc());
	}
	
	// 입력 받는 함수
	public void inputNo(Scanner sc) {
		// 입력 메세지 출력
		System.out.print("\n정수 계산식을 입력 : ");
		// 입력 받은 값을 문자열로 저장
		String str = sc.nextLine();
		
		// 문자열을 자르기
		for(int i = 0 ; i < str.length() ; i++) {
			char ch = str.charAt(i);
			fomula[1] = ch + "";
			if(ch < '0' || '9' < ch) {
				// 연산 기호의 인덱스값 찾기
				int idx = str.indexOf(ch);
				fomula[0] = str.substring(0, idx);
				fomula[2] = str.substring(idx + 1);
				
				return;
			}
		}
	}
	
	// 계산하는 함수
	public int calc() {
		String symbol = fomula[1];
		int no1 = Integer.parseInt(fomula[0]);
		int no2 = Integer.parseInt(fomula[2]);
		int result = 0;
		// 기호에 따라 연산 함수를 호출한다.
		switch(symbol) {
		case "+":
			result = plus(no1, no2);
			break;
		case "-":
			result = minus(no1, no2);
			break;
		case "*":
			result = multiply(no1, no2);
			break;
		case "/":
			result = divide(no1, no2);
			break;
		case "%":
			result = remain(no1, no2);
			break;
		}
		
		return result;
	}
	
	// 출력하는 함수
	public void toPrint(int result) {
		// 문자열 배열을 문자열로 합치기
		String str = "";
		for(int i = 0 ; i < fomula.length ; i++) {
			str += fomula[i];
		}
		System.out.println("입력된 식 : " + str + "\n\t결과 : " + result);
	}

	private int plus(int no1, int no2) {
		return no1 + no2;
	}

	private int minus(int no1, int no2) {
		return no1 - no2;
	}

	private int multiply(int no1, int no2) {
		return no1 * no2;
	}

	private int divide(int no1, int no2) {
		return no1 / no2;
	}

	private int remain(int no1, int no2) {
		return no1 % no2;
	}

	public static void main(String[] args) {
		new Ex01();
	}
}

좋은 웹페이지 즐겨찾기