국비 Day 09 : Method
예제
🌟예제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();
}
}
Author And Source
이 문제에 관하여(국비 Day 09 : Method), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@samjan/국비-Day-09저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)