9.22 7-2일 차 MethodShape02
MethodShape02
메소드 형식 2 : 매개변수는 없지만 리턴값이 있는 형식
주로 메소드안에서 데이터를 생성(예:사용자로부터 값을 입력받기)하여
그 값으로 처리한 후 그 결과값을 반환하고자 할 때 주로 사용
**형식 ***
반환타입 메소드명( 매개변수 없어서 비워둠 ){ 처리할 일 ; return 결과값 ; ->반환하고자 하니까 꼭 필요 }
----------------------------------------------------class안-------------------------------------------------------------------------------------------------- static int noParamYesReturn( ) {
int sum=0;
for(int i=1;i<=10;i++) sum+=i;
return; 반환타입이 void가 아닌 경우는 반드시 값을 반환해야 한다. (값이 있어야 한다)
return sum;
System.out.println("return문 이후"); return 밑에까지 안내려와!! 실행할 수 없으므로 Unreachable Code 에러 }
문1)사용자로 부터 국영수 점수를 입력받아 평균을 구해서 학점을 반환하는 메소드 정의
예] "A학점","B학점"....
static String getGrade(){
Scanner sc = new Scanner(System.in);
String [ ] subjects = {"국어","영어","수학"}; 과목 타이틀 출력용
int [] jumsu = new int [subjects.length]; 점수 저장용
int total = 0; 총합 저장용
for (int i=0 ; i<jumsu.length ; i++){ 사용자 입력받기 system.out.pringtln(subjects[i]+"점수입력?") 타이틀 출력
jumsu[i] = sc.nextInt(); 점수 저장
total += jumsu[i]; total에 누적
}
방법1. 변수에 결과값 저장 후 변수 반환
Sring result;
switch(total/30) {
case 10:
case 9:result="A학점";break;
case 8:result="B학점";break;
case 7:result="C학점";break;
case 6:result="D학점";break;
default:result="F학점";
}
return result;
방법2. 직접 return 시킴 이건 break문 필요가 없다아아아아
switch(total/30) {
case 10:
case 9:return "A학점";
case 8:return"B학점";
case 7:return"C학점";
case 6:return"D학점";
default:return"F학점"; ** 주의 default값은 반드시 존재해야함 ! case가 없는 경우도 생각해야함
}
문2)메소드 안에서 사용자로부터 숫자 두개(스캐너)와 산술연산자(System.in.read()사용)
를 입력받는(+,-,*,/) 메소드로
산술 결과는 메소드 안에서 바로 출력하고
산술 연산자 기호를 반환하는 메소드를 정의 해라
그리고 main 메소드에서 호출하여 사용자가 입력한 연산자를 출력하라.
static char getOperaor () throws IOException {
Scanner sc = new Scanner(System.in);
system.out.println("첫번째 숫자?");
int fnum = sc.nextInt();
system.out.printlm("연산기호(+,-,*,/)입력? ");
char op = (char)System.in.read();
system.out.println("두번째 숫자?");
int snum = sc.nextlnt();
system.out.printf("첫번째 숫자 :%d, 기호:%s, 두번째 숫자:%d%d",funm,op,snum);
switch( op ) {
case '+' : system.out.printf("%d + %d = %d%n", fnum,snum,fnum+snum);
break;
case '-' : system.out.printf("%d - %d = %d%n", fnum,snum,fnum-snum);
break;
case '*' : system.out.printf("%d * %d = %d%n", fnum,snum,fnum*snum);
break;
case '/' : system.out.printf("%d ÷ %d = %d%n", fnum,snum,fnum/snum);
break;
default: System,out.println("잘못된 연산자 기호입니다.");
}
return op ;
}
---------------------------------------------------main 안--------------------------------------------------------------------------------------------------
메소드 호출
(call)방법1.
변환값을 변수에 저장 ->이거 코드 지저분함
int value =noParamYesReturn( ); system.out.println ("1부터 10까지 누적합:"+value)
방법2. 변수 미 사용 : 반환값 바로 출력
system.out.println (("1부터 10까지 누적합:"+noParamYesReturn( ))
string result = getGrade(); system,out,println ("당신의 학점은 "+result);
or
system.out.println ("당신의 학점은 " + getGrade()); 이게 더 짧고 좋네
system.out.println("사용 연산자는 : "+ getOperaor ());