자바7일차

달달한스위츠·2024년 2월 7일

자바배우기

목록 보기
7/43

메소드 공부 시작

package edu.java.method01;

/*
 * 메소드 : 기능을 수행하기 위한 코드. 주로 반복적으로 기능을 수행할 때 생성
 * - 메소드는 클래스 안에서, 그리고 다른 메소드 외부에서 만든다.
 * - (주의) 메소드 안에 또다른 메소드를 만들 수 없음
 * - 메소드 정의 :
 * 		[수식어] 리턴타입 메소드이름([매개변수1, 매개변수2, ...]) {본문}
 * 		수식어 종류 : public, private, static, ... - public 생략 가능
 * 		리턴타입 : 자료타입(int, double, String, class, ...), void(없음)
 * 		매개변수 : 함수 호출시 전단되는 데이터를 저장하는 변수
 * 			   전달받는 데이터가 없으면 매개변수 선언 생략 가능
 * 		{ 본문 } : 메소드 본체(body). 수행해야 할 기능을 작성
 * */

public class MethodMain01 {
	// 메소드 생성
	public static void sayHello(String name) { // String name : 매개변수
		System.out.println("안녕하세요~");
		System.out.println("저는 " + name + "입니다.");
	} // end sayHello()
	
	public static void sayAge(int age) {
		System.out.println("제 나이는 " + age + "입니다.");
	} // end sayAge()

	/*
	 * static 수식어 : 프로그램이 생성하고록 선언하는 키워드
	 *  * static 메소드에서는 static으로 선언된 메소드만 호출 가능
	 */
	public static void main(String[] args) {
		System.out.println("저는 컴퓨터입니다.");
		System.out.println("저는 스마트폰입니다.");
		
		sayHello("목진혁"); // sayHello() 호출 (인자값으로 "목진혁"을 넘겨줌)
		sayHello("목진혁"); // 메소드 콜		(파라매터)

		sayAge(30);
	} // end main()

} // end MethodMain01
package edu.java.method02;

public class MethodMain02 {

	// 기능 : 두 개의 정수를 매개변수로 전달받아서, 두 정수의 합을 리턴
	// 메소드 이름 : add
	// 리턴타입 : int
	// 매개변수 : int x, int y
	public static int add(int x, int y) {
		int result = x + y;
		return result;
	} // end add()
	
	// 기능 : 두 개의 정수를 매개변수로 전달받아서, 두 정수의 차을 리턴
	// 메소드 이름 : sub
	// 리턴타입 : int
	// 매개변수 : int x, int y
	public static int sub(int x, int y) {
		int result = x - y;
		return result;
	} // end sub()
	
	
	public static void main(String[] args) {
		System.out.println("메소드 연습");
		int result = add(10, 20);
		System.out.println(result);
		result = sub(10, 20);
		System.out.println(result
				
				);
		
	} // end main()

} // end MethodMain02
package edu.java.method03;

import java.util.Scanner;

public class MethodMain03 {

	// 1. 국어, 영어, 수학 점수를 입력받아서 3개의 변수에 저장
	// 2. 메소드를 정의하여 입력받은 점수를 출력
	// 3. 메소드를 정의하여 세 과목의 총점을 출력
	// 4. 메소드를 정의하여 세 과목의 평균을 출력
	// 5. 메소드를 정의하여 평균에 따른 등급을 출력

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("국어점수 입력>");
		int kor = sc.nextInt();
		System.out.println("영어점수 입력>");
		int eng = sc.nextInt();
		System.out.println("수학점수 입력>");
		int met = sc.nextInt();

		printScores(kor, eng, met);
		int sum = calcTotal(kor, eng, met);
		System.out.println("총점 : " + sum);
		double aver = calcAverage(sum);
		System.out.printf("평균 : %.2f %n", aver);
		String grade = selectGrade(aver);
		System.out.println("등급" + grade);
	} // end main()

	// 국/영/수 점수를 출력하는 메소드
	// 메소드 이름 : printScores()
	public static void printScores(int korean, int english, int math) {
		System.out.print("국어점수 : " + korean + " ");
		System.out.print("영어점수 : " + english + " ");
		System.out.print("수학점수 : " + math + " ");
		System.out.println();
	} // end printScores()

	// 국/영/수 총점를 출력하는 메소드
	// 메소드 이름 : calcTotal()
	public static int calcTotal(int korean, int english, int math) {
		int tot = korean + english + math;
		return tot;
	} // end calcTotal()

	// 국/영/수 평균를 출력하는 메소드
	// 메소드 이름 : calcAverage()
	public static double calcAverage(int x)  {
		double aver = x / 3.0;
		return aver;
	} // end calcAverage()

	// 등급를 출력하는 메소드
	// 메소드 이름 : selectGrade()
	public static String selectGrade(double x) {
		double aver = x;
		String grade = "";
		if(90 <= aver) {
			grade = "A";
		} else if(80 <= aver) {
			grade = "B";
		} else if(70 <= aver) {
			grade = "C";
		} else if(69 > aver) {
			grade = "D";			
		}
		return grade;
		
	} // end selectGrade()

} // end MethodMain03
package edu.java.method04;

import java.util.Scanner;

public class MethodMian04 {

	public static void main(String[] args) {
		System.out.println("배열을 매개변수로 갖는 메소드");
		
		// 변수 선언 -> 공간 생성 -> 주소값 존재
		int[] scores = new int[5];
		System.out.println("주소값 : " + scores);
		
		inputSource(scores);
		
		printScores(scores);
		
		
	} // end main()

	private static void printScores(int[] scores) {
		System.out.println("주소값 : "+ scores);
		for(int x : scores) {
			System.out.println("입력한 점수 : " + x);
		}
		
	}

	private static void inputSource(int[] scores) {
		Scanner sc = new Scanner(System.in);
		for(int i =0; i < scores.length; i++) {
			System.out.println("점수 : " + i + "번째 입력");
			scores[i] = sc.nextInt();
		}
		
	}

} // end MethodMain04
package edu.java.method05;

// 메소드 overloading
// 1. 매개변수의 개수가 다르거나
// 2. 매개변수의 타입이 다른 경우
// 같은 이름으로 정의할 수 있음
// (주의) 메소드의 리턴타입만 다른 경우는 같은 이름으로 메소드를 정의할 수 없음

public class MethodMian05 {

	public static void main(String[] args) {
		System.out.println();
		System.out.println("문자열");
		System.out.println(1);
		System.out.println(1.0);
		System.out.println(true);
		
		sayHello();
		sayHello(null);
		
	} // end main()
	
	public static void sayHello() {
		System.out.println("안녕하세요.");
		
	} // end sayHello()
	
	public static void sayHello(String name) {
		System.out.println("안녕하세요.");
		System.out.println("제 이름은 " + name + "입니다.");
		
	} // end sayHello()
	

} // end MethodMian05

간단한 class사용법 예제

BasicTv

package edu.java.class01;

// 클래스(Class)
// - 만들고자 하는 대상의 상태(속성) 정보들을 "맴버 변수(필드)"로 선언하고,
//   대상이 가져야 할 기능들을 "메소드"로 정의하는,
//   새로이 만드는 "데이터 타입" ---> 붕어빵 틀
public class BasicTv {
	// TV가 가져야 할 상태(속성, 성질) => 맴버 변수(필드, 프로퍼티)
	boolean powerOn; // TV의 전원 상태(true : on, false : off)
	int channel = 1; // TV의 채널 정보. 1로 초기화
	int volume; // TV의 소리 정보. 0으로 초기화

	// TV가 가져야 할 기능 => 메소드

	// 전원(powerOn) on/off 기능
	public void turnOnOff() {
		if (powerOn == false) {
			powerOn = true;
			System.out.println("TV가 겨졌습니다.");
		} else {
			powerOn = false;
			System.out.println("TV가 꺼졌습니다.");
		}
	}
	
	// 채널 증가 기능 메소드
	public void channelUp() {
		// 이 메소드를 호출하면 channel 변수가 1씩 증가
		// 1, 2, 3, 4, 5, 1, 2, .. 순환 구조를 갖는다.
		channel++;
		if(channel == 6) {
			channel = 1;
		}
		System.out.println("channel up : " + channel);
	}
	
	// 채널 감소 기능 메소드
	public void channelDown() {
		// 5, 4, 3, 2, 1, 0 => 5
		channel--;
		if(channel == 0) {
			channel = 5;
		}
		System.out.println("channel down : " + channel);
	}
	// 소리 증가 기능 메소드(소리 최대 4)
	public void volumeUp() {
		volume++;
		if(volume > 4) {
			volume = 4;
		}
		System.out.println("volume up : " + volume);
	}
	// 소리 감소 기능 메소드(소리 최소 0)
	public void volumeDown() {
		volume--;
		if(volume < 0) {
			volume = 0;
		}
		System.out.println("volume down : " + volume);
	}
	
	
	
	
	
	
	public void displayInfo() {
		System.out.println("--- TV 현재 상태 ---");
		System.out.println("전원 : " + powerOn);
		System.out.println("채널 : " + channel);
		System.out.println("볼륨 : " + volume);
	}

} // end BasicTv

Class

package edu.java.class01;

public class ClassMain01 {

	public static void main(String[] args) {
		// 클래스의 "인스턴스"를 "생성"한다
		// 클래스이름 변수이름 = new 생성자();

		// 변수 타입으로 선언할 수 있는 형태
		// - 기본타입 변수 : byte, char, int등. 실제 값을 변수 안에 저장
		// 예) int a=3, b = 10;
		// - 참조타입 변수 : 배열, 클래스, 인터페이스 등. 주소를 통해 객체 참조
		// 예) int[] a = new int[3];
		// BasicTv tv = new BasicTv();

		BasicTv tv = new BasicTv();
		tv.displayInfo();

		// * 기본 생성자를 호출하여 인스턴스를 생성하게 되면
		// 클래스의 맴버 변수들은 기본값으로 초기화됨
		// 숫자(int, double, ..)타입의 기본값 : 0, 0.0
		// boolean 타입의 기본값 : false
		// 그 외 타입(참조 타입) : null
		tv.turnOnOff();
		tv.displayInfo();

		tv.channelUp();
		tv.channelUp();
		tv.channelUp();
		tv.channelUp();
		tv.channelUp();
		tv.channelUp();
		tv.displayInfo();

		tv.channelDown();
		tv.channelDown();
		tv.channelDown();
		tv.channelDown();
		tv.channelDown();
		tv.channelDown();
		tv.channelDown();
		tv.channelDown();
		tv.displayInfo();

		tv.volumeUp();
		tv.volumeUp();
		tv.volumeUp();
		tv.volumeUp();
		tv.volumeUp();
		tv.displayInfo();

		tv.volumeDown();
		tv.volumeDown();
		tv.volumeDown();
		tv.volumeDown();
		tv.volumeDown();
		tv.volumeDown();
		tv.displayInfo();

	} // end main()

} // end ClassMain01

0개의 댓글