형식)
[접근제한] 반환형 메서드이름(매개변수 혹은 인자){
메서드 호출 시 실행될 문장;
}
접근제한 : public > protested > default > private
(클래스, 메서드, 변수 앞에 사용이 됨)
반환형
메서드 이름
매개변수
메서드 실행문
public class MethodExam_01 {
public static void message(){
System.out.println("방가방ㄱ~");
}
public static void input() {
Scanner sc = new Scanner(System.in);
int arr[] = new int[3];
for(int i = 0; i<arr.length; i++) {
System.out.print((i+1)+"번째 번호 입력: ");
arr[i]=sc.nextInt();
}
for(int i = 0; i<arr.length; i++) {
System.out.print(arr[i]+"\t");
}
System.out.println();
sc.close();
}
public static void main(String[] args) {
System.out.println("프로그램 시작");
message(); // 메서드 호출
System.out.println("프로그램 종료");
System.out.println();
input();
} // main() 메서드 end
}
[문제1] 1 ~ 100까지의 홀수의 합과 짝수의 합을 구하는 메서드를 만들고, 호출하여 결과 출력
public class MethodExam_02 {
public static void sum() {
int evensum = 0, oddsum =0;
for(int i = 0; i<=100; i++) {
if (i %2 == 1) {
oddsum+=i;
}else {
evensum+=i;
}
}
System.out.println("홀수의 합 " + oddsum);
System.out.println("짝수의 합 " + evensum);
}
public static void main(String[] args) {
sum();
}
}
형식)
[접근제한] 변환형 메서드이름(type 변수1, type 변수2){
메서드 호출 시 실행 문장;
}
public class MethodExam_03 {
private static void add(int su1, int su2) {
System.out.println(su1 + "+" + su2+ "=" + (su1+su2));
}
public static void main(String[] args) {
add(150, 127); // 실인수
}
}
import java.util.Scanner;
public class MethodExam_04 {
private static void sum(int start, int end) { // 값만 받기에 변수명 아무거나 다 가능
int sum = 0;
for(int i = start; i <= end; i++) {
sum+=i;
}
System.out.println(start + " ~ " + end + "까지의 합 >>> " + sum);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("합을 구할 시작 정수 입력 : ");
int startNo = sc.nextInt(); // 지역변수 - 해당 지역에서 사용되는 변수
System.out.print("합을 구할 마지막 정수 입력 : ");
int endNo = sc.nextInt();
sum(startNo, endNo);
sc.close();
}
}
[문제2] 키보드로 입력 받은 수까지의 홀수의 합과 짝수의 합을 구하는 메서드를 만들고 메서드를 호출하여 처리 후 화면 출력
public class MethodExam_05 {
private static void sum(int a) {
int oddsum = 0, evensum=0;
for (int i = 0; i<=a;i++) {
if(i%2==1) {
oddsum+=i;
}else {
evensum+=i;
}
}
System.out.println("홀수 합 : "+oddsum);
System.out.println("짝수 합 : "+evensum);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("입력 : ");
// int max = sc.nextInt();
// sum(max);
sum(sc.nextInt());
sc.close();
}
}
콘솔 창에서 간단하게 계산하는 계산기
import java.util.Scanner;
public class MethodExam_06 {
private static void plus(int su1, int su2) {
System.out.println(su1+"+"+su2+"="+(su1+su2));
}
private static void m(int su1, int su2) {
System.out.println(su1+"-"+su2+"="+(su1-su2));
}
private static void d(int su1, int su2) {
System.out.println(su1+"*"+su2+"="+(su1*su2));
}
private static void n(int su1, int su2) {
System.out.println(su1+"/"+su2+"="+(su1/su2));
}
private static void o(int su1, int su2) {
System.out.println(su1+"%"+su2+"="+(su1%su2));
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 1. 키보드로 두 개의 정수와 연산자를 입력 받자
System.out.print("첫번째 정수 입력 : ");
int su1 = sc.nextInt();
System.out.print("두번째 정수 입력 : ");
int su2 = sc.nextInt();
System.out.print("연산자(+,-,*,/,%) 중 하나를 입력 : ");
String op = sc.next();
// 2. 연산자 변수에 입력된 연산기호를 가지고 해당 기호에 맞는 메서드 호출
switch(op) {
case "+":
plus(su1,su2);
break;
case "-":
m(su1,su2);
break;
case "*":
d(su1,su2);
break;
case "/":
n(su1,su2);
break;
case "%": o(su1,su2);
break;
}
sc.close();
}
}
1. call by value 방식
2. call by reference 방식
public class MethodExam_07 {
private static void call(int num) { // 200값 저장
num = 100;
System.out.println("num >>> " + num);
} // call()메서드 end
public static void main(String[] args) {
// 1. call by value 방식
int num = 200;
System.out.println("메서드 호출 전...");
System.out.println("num >>> " + num);
System.out.println();
call(num);
System.out.println("메서드 호출 후...");
System.out.println("num >>> " + num);
}
}
public class MethodExam_08 {
public static void change(int[] array) {
System.out.println("array >>> " + array);
for(int i=0; i<array.length; i++) {
array[i] = array[i]*10;
}
}
public static void main(String[] args) {
// 2. call by reference 방식
int[] arr = new int[3];
arr[0] = 10; arr[1]=20; arr[2] = 30;
System.out.println("arr >>> " + arr);
System.out.println("change() 메서드 호출 전");
for(int i = 0; i<arr.length; i++) {
System.out.println("arr["+i+"] >>> " + arr[i]);
}
System.out.println();
change(arr);
System.out.println("change() 메서드 호출 후");
for(int i = 0; i<arr.length; i++) {
System.out.println("arr["+i+"] >>> " + arr[i]);
}
}
}
// 메서드 호출 시 반환형에 대한 사용
public class MethodExam_09 {
public static int method1() {
return 178;
}
// 변수명이 반환되는 경우
public static int method2(int su1,int su2) {
int sum = (su1 * 2)+(su2*2);
return sum;
}
// 수식이 반환되는 경우
public static int method3(int su1,int su2) {
return su1 * su2;
}
// 단순한 문자열을 반환하는 경우
public static String method4() {
return "세종대왕";
}
public static String method5(String str1, String str2) {
String result = str1 + str2 +"만세";
return result;
}
// 문자열 수식을 반환하는 경우
public static String method6(String str1, String str2) {
return str1 + str2;
}
public static void main(String[] args) {
int su = method1();
System.out.println("su >>> " + su);
// 같은 결과값
System.out.println("method1()메서드 호출 후 반환되는 값 >>> " + method1());
System.out.println("method2()메서드 호출 후 반환되는 값 >>> " + method2(200,142));
System.out.println("method3()메서드 호출 후 반환되는 값 >>> " + method3(200,142));
System.out.println("method4()메서드 호출 후 반환되는 값 >>> " + method4());
System.out.println("method5()메서드 호출 후 반환되는 값 >>> " + method5("대한", "민국"));
System.out.println("method5()메서드 호출 후 반환되는 값 >>> " + method6("홍", "길동"));
}
}
성적 처리 프로그램
import java.util.Scanner;
public class MethodExam_10 {
// 총점을 구하는 메서드
public static int total(int k, int e, int m) {
return k + e + m;
}
// 평균을 구하는 메서드
public static double average(int tot) {
return tot/3.0;
}
// 학점을 구하는 메서드
public static String hakjum(double avg) {
String grade = ""; // String grade = null;
if(avg >= 90) {
grade = "A학점";
}else if(avg >= 80) {
grade = "B학점";
}else if(avg >= 70) {
grade = "C학점";
}else if(avg >= 60) {
grade = "D학점";
}else {
grade = "F학점";
}
return grade;
}
public static void main(String[] args) {
// 1. 메인 메서드에서 이름, 국어점수, 영어점수, 수학점수를 키보드로 입력
Scanner sc = new Scanner(System.in);
System.out.print("학생 이름 : ");
String name = sc.next();
System.out.print("국어 점수 : ");
int kor = sc.nextInt();
System.out.print("영어 점수 : ");
int eng = sc.nextInt();
System.out.print("수학 점수 : ");
int math = sc.nextInt();
System.out.println();
// 2. 총점 ==> 총점 메서드호출
int sum = total(kor, eng, math);
// 3. 평균 ==> 평균 메서드호출
double avg = average(sum);
// 4. 학점 ==> 학점 메서드호출
String hakjum = hakjum(avg);
// 5. 결과 출력
System.out.println("이 름 : " + name);
System.out.println("국어점수 : " + kor + "점");
System.out.println("영국어점수 : " + eng + "점");
System.out.println("수학점수 : " + math + "점");
System.out.println("총 점 : " + sum + "점");
System.out.printf("평 균 : %.2f점\n" ,avg);
System.out.println("학 점 : " + hakjum);
sc.close();
}
}
무한반복 --> while문
import java.util.Scanner;
// 개인별 성적 처리 - 무한반복
public class MethodExam_11 {
// 총점을 구하는 메서드
public static int total(int k, int e, int m) {
return k + e + m;
}
// 평균을 구하는 메서드
public static double average(int tot) {
return tot/3.0;
}
// 학점을 구하는 메서드
public static String hakjum(double avg) {
String grade = ""; // String grade = null;
if(avg >= 90) {
grade = "A학점";
}else if(avg >= 80) {
grade = "B학점";
}else if(avg >= 70) {
grade = "C학점";
}else if(avg >= 60) {
grade = "D학점";
}else {
grade = "F학점";
}
return grade;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(true) {
System.out.print("학생 이름 : ");
String name = sc.next();
System.out.print("국어 점수 : ");
int kor = sc.nextInt();
System.out.print("영어 점수 : ");
int eng = sc.nextInt();
System.out.print("수학 점수 : ");
int math = sc.nextInt();
System.out.println();
// 2. 총점 ==> 총점 메서드호출
int sum = total(kor, eng, math);
// 3. 평균 ==> 평균 메서드호출
double avg = average(sum);
// 4. 학점 ==> 학점 메서드호출
String hakjum = hakjum(avg);
// 5. 결과 출력
System.out.println("이 름 : " + name);
System.out.println("국어점수 : " + kor + "점");
System.out.println("영국어점수 : " + eng + "점");
System.out.println("수학점수 : " + math + "점");
System.out.println("총 점 : " + sum + "점");
System.out.printf("평 균 : %.2f점\n" ,avg);
System.out.println("학 점 : " + hakjum);
System.out.println(":::::::::::::::::::::::::::::::::::::::::::::");
System.out.println();
// 계속 진해할지, 종료 할지 여부 확인
System.out.print("계속 진행할까요 (Y: 계속 / N: 종료) : ");
String res = sc.next();
if(res.equalsIgnoreCase("N")) {
// 대문자 소문자 구분 X
// res.equals("N") -> 대소구분
break;
}
}
System.out.println("수고하셨습니다");
sc.close();
}
}
import java.util.Scanner;
public class MethodExam_12 {
// 2과목 총점을 구하는 메소드
public static int sum2(int k, int e) {
return k+e;
}
// 3과목 총점을 구하는 메소드
public static int sum3(int k, int e, int m) {
return k+e+m;
}
// 4과목 총점을 구하는 메소드
public static int sum4(int k, int e, int m, int j) {
return k+e+m+j;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("국어 점수 : ");
int kor = sc.nextInt();
System.out.print("영어 점수 : ");
int eng = sc.nextInt();
System.out.print("수학 점수 : ");
int math = sc.nextInt();
System.out.print("자바 점수 : ");
int java = sc.nextInt();
System.out.println();
System.out.println("2과목 총점 >>> " + sum2(kor,eng));
System.out.println("3과목 총점 >>> " + sum3(kor,eng,math));
System.out.println("4과목 총점 >>> " + sum4(kor,eng,math,java));
sc.close();
}
}
[메서드 다증정의 규칙]
import java.util.Scanner;
public class MethodExam_13 {
// 메서드이름은 같지만 메소드 갯수가 달라서 실행 가능
// 2과목 총점을 구하는 메소드
public static int sum(int k, int e) {
return k+e;
}
// 3과목 총점을 구하는 메소드
public static int sum(int k, int e, int m) {
return k+e+m;
}
// 4과목 총점을 구하는 메소드
public static int sum(int k, int e, int m, int j) {
return k+e+m+j;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("국어 점수 : ");
int kor = sc.nextInt();
System.out.print("영어 점수 : ");
int eng = sc.nextInt();
System.out.print("수학 점수 : ");
int math = sc.nextInt();
System.out.print("자바 점수 : ");
int java = sc.nextInt();
System.out.println();
System.out.println("2과목 총점 >>> " + sum(kor,eng));
System.out.println("3과목 총점 >>> " + sum(kor,eng,math));
System.out.println("4과목 총점 >>> " + sum(kor,eng,math,java));
sc.close();
}
}
<처리조건>
1. 데이터구조 : 이름(String),학번(int),학과(String),전화번호(String)
2. 학생수 결정 : 키보드로 입력 받는다.
3. 메뉴 선택 : 다음 메뉴를 구성하여 프로그램을 관리한다.
<메뉴구성>
• 1. 학생등록 : 키보드로 학생정보 입력 -> 배열저장
• 2. 전체출력 : 등록학생 전체출력
• 3. 학생조회 : 학번 입력 -> 이름, 학번, 학과, 전화번호 출력
• 4. 정보수정 : 학번 입력 -> 학과와 전화번호 수정
• 5. 프로그램 종료 : 프로그램을 종료하시겠습니다?(y/n)
y입력-> 종료, n입력 -> 프로그램 반복
-> 위 5개의 메뉴는 별도의 메서드로 정의해 놓고, 메뉴 선택 시 해당 메서드가 호출되어 실행되도록 하시오.
import java.util.Scanner;
public class Exam_01 {
public static void information(String[] name,int[] number,String[] major, String[] tel,Scanner sc) {
System.out.println("학생 정보 입력");
for(int i = 0; i<name.length; i++) {
System.out.print("이름 : ");
name[i]=sc.next();
System.out.print("학번 : ");
number[i]=sc.nextInt();
System.out.print("학과 : ");
major[i]=sc.next();
System.out.print("번호 : ");
tel[i]=sc.next();
System.out.println();
}
}
public static void print(String[] name,int[] number,String[] major, String[] tel) {
for(int i = 0; i<name.length; i++) {
System.out.print("이름 : " + name[i]+" \t");
System.out.print("학번 : " + number[i]+" \t");
System.out.print("전공 : " + major[i]+" \t");
System.out.println("전화번호 : "+tel[i]);
System.out.println();
}
}
public static void search(String[] name,int[] number,String[] major, String[] tel, Scanner sc) {
System.out.println("학생검색");
System.out.print("학번 입력 : ");
int number2 = sc.nextInt();
for(int i = 0; i<name.length; i++) {
if(number[i] == number2) {
System.out.print("이름 : " + name[i]+" \t");
System.out.print("학번 : " + number[i]+" \t");
System.out.print("전공 : " + major[i]+" \t");
System.out.println("전화번호 : "+tel[i]);
}
}
System.out.println();
}
public static void fix(String[] name,int[] number,String[] major, String[] tel,Scanner sc) {
System.out.println("정보수정");
System.out.print("학번 입력 : ");
int number3 = sc.nextInt();
for(int i = 0; i <name.length; i++) {
if(number3 == number[i]) {
System.out.print("학과 : ");
major[i] = sc.next();
System.out.print("번호 : ");
tel[i] = sc.next();
}
}
System.out.println();
}
private static String over(Scanner sc) {
System.out.print("프로그램 종료 (Y / N) : ");
String res = sc.next();
System.out.println();
return res;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("학생 수 입력 : ");
String[] name = new String[sc.nextInt()];
int[] number = new int[name.length];
String[] major = new String[name.length];
String[] tel = new String[name.length];
while(true) {
System.out.print("선택 : ");
int menu = sc.nextInt();
String res = "";
if (menu==1) {
information(name,number,major,tel,sc);
} else if(menu == 2) {
print(name,number,major,tel);
}else if(menu == 3) {
search(name,number,major,tel,sc);
}else if(menu == 4) {
fix(name,number,major,tel,sc);
}else if(menu == 5) {
res = over(sc);
}
if(res.equalsIgnoreCase("Y")){
break;
}
}
}
}