학원/JAVA

9.22 7-2일 차 MethodShape02

도원결의 2022. 9. 22. 19:07

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 ());