5일차 강의 정리
1. 메소드 ( return 값이 없는 경우 )
소스
public class Ex01 {
public static void func1(){
//메소드 start
//메소드: 메소드명(인자){}
System.out.println("메소드1 출력합니다.");
System.out.println("-------------------");
}//func1 end
public static void main(String[] args) {
//main start
String st1="안녕"; //String 변수 선언 및 초기화
func1(); //메소드1 호출
func2(1,2); //메소드2-1 호출
func2(st1,999); //메소드2-2 호출
func2(10,20,30); //메소드2-3 호출
}//main end, 메소드 end
public static void func2(int a,int b){ //메소드 이름 차별화
System.out.println("메소드2-1 출력합니다.");
System.out.println(a+"+"+b+"="+(a+b));
}
public static void func2(String a,int b){ //But 자료형이 다를경우 허용
System.out.println("메소드2-2 출력합니다.");
System.out.println(a+"+"+b+"="+(a+b));
}
public static void func2(int x,int y,int z){ //But 인자의 갯수가 다를경우 허용(->메소드 오버로드)
System.out.println("메소드2-3 출력합니다.");
System.out.println(x+"+"+y+"+"+z+"="+(x+y+z));
}
}//class end
메소드 호출
main메소드 에서 다른 class 안의 메소드를 호출(func1,func2..)
메소드는 이름을 다르게 써야한다
이름을 같게 쓸경우 ( )안 인자의 자료형이 다르거나 인자의 갯수가 다른경우 허용한다
(단, 인자의 자료형이 아니라 메소드 이름앞의 자료형만 다르게 쓰면 오류처리된다)
이를 메소드 오버로드 라고 한다
결과
2. 메소드 ( return 값이 있는 경우 )
소스
public class Ex02 {
public static void main(String[] args) {
//main start
//메소드를 이용한 계산기 프로그램
int a=5,b=3;
func1(a,b); //덧셈 메소드 호출
func2(a,b); //뺄셈 메소드 호출
int x = func3(a,b); //곱셈 메소드 호출
System.out.println("func3의 수행결과는 "+x);
func4(a,b); //나눗셈 메소드 호출
return; //main이 void인 이유 : return 값이 없기 때문에
}//main end
public static void func1(int a,int b){ //덧셈 메소드
System.out.println(a+"+"+b+"="+(a+b));
return; //void인 경우 생략가능
}
public static void func2(int a,int b){ //뺄셈 메소드
System.out.println(a+"-"+b+"="+(a-b));
}
public static int func3(int a,int b){ //곱셈 메소드(return c의 자료형을 void대신 int로 변경)
int c = a*b;
return c; //c값을 main으로 리턴
}
public static void func4(double a,double b){ //나눗셈 메소드
System.out.println(a+"÷"+b+"="+(a/b));
}
}//class end
return 할 값의 자료형에따라 함수의 자료형을 동일 시 해야한다
현재 예제에서 곱셈 메소드(func3)에서 확인할 수있다
결과
3. args[]를 이용하여 입력 받아 계산하기
소스
public class Ex03 {
/* args 입력을 받아 계산기
* 메소드 사용
* 기능별 (+,-,*,/)
*/
public static void main(String[] args) throws Exception{
//main start
int a = Integer.parseInt(args[0]); //입력받은 문자열 정수(int)로 변환하며 선언 (첫번째 수)
String b = args[1]; //연산자는 문자열 그대로 선언(+, -, *, /)
int c = Integer.parseInt(args[2]); //입력받은 문자열 정수(int)로 변환하며 선언 (두번째 수)
func1(a,b,c); //메소드 호출
}//main end
public static void func1(int a,String b,int c){ //계산할 메소드 func1
int add = a+c;
int sub = a-c;
int mul = a*c;
double div = (double)a/(double)c;
if(b.equals("+")){ //b가 +인 경우
System.out.println(a+"+"+c+"="+add);
}else if(b.equals("-")){
System.out.println(a+"-"+c+"="+sub);
}else if(b.equals("*")){
System.out.println(a+"X"+c+"="+mul);
}else if(b.equals("/")){
System.out.println(a+"÷"+c+"="+div);
}else {
System.out.println("잘못 입력하셨습니다.");
}
/*switch(b){ //switch 문 사용
case "+":
System.out.println(a+b+c+"="+add);
break;
case "-":
System.out.println(a+b+c+"="+sub);
break;
case "*":
System.out.println(a+"X"+c+"="+mul);
break;
case "/":
System.out.println(a+"÷"+c+"="+div);
break;
default:
System.out.println("잘못 입력하셨습니다.");
}*/
}//func1 end
}//class end
계산하는 함수는 if()문 switch()문 두가지 방법을 제시해봤다
10 / 3 입력
띄어쓰기로 구분하여 입력한다
결과