-
[JAVA] Overloading언어/JAVA 2022. 9. 7. 17:37
-메소드의 이름은 같고, 매개변수의 타입, 개수, 순서가 다르면 서로 다른 메소드로
인지하는 문법
-일관된 메소드 이름을 사용하여 사용자에게 직관적인 이름을 사용하게 함
-전달인수(매개변수)의 자료형, 순서 등이 서로 달라도 가능
public static void main(String[] args) { int maxValue=max(56,87,23); maxValue=max(56,87,23,54); maxValue=max(56,87); double maxValue0=max(123.45,456.56); System.out.println("56, 87, 23 중 가장 큰 값은 "+maxValue); System.out.println("56, 87, 23, 54 중 가장 큰 값은 "+maxValue); System.out.println("56, 87 중 가장 큰 값은 "+maxValue); System.out.println("123.45, 456.56 중 가장 큰 값은 "+maxValue0); } public static double max(double d, double e) { double m=(d>e)? d: e; return m; } public static int max(int i, int j) { int m=(i>j)? i:j; return m; } public static int max(int i, int j, int k, int l) { int m1=(i>j)? i:j; int m2=(k>i)? k:j; int m3=(m1>m2)? m1: m2; return m3; } public static int max(int i, int j, int k) { int m=(i>j)? i:j; m=(m>k)? m:k; return m; }
ublic static void main(String[] args) { // 전달인수의 갯수가 일정치 않아서 오버로딩으로는 해결할 수 없을 때 int c; c=max(50,60,80,60,54,60); System.out.println("max: "+c); c=max(50,60,80,60,54,60,56,87,69); System.out.println("max: "+c); } public static int max(int...a) { // 전달되는 전달인수 갯수만큼의 배열이 생성되고 // 그 배열에 전달인수가 저장됨 // 배열 이름은 매개변수 a int max=a[0]; for(int i=1; i<a.length; i++) if(max<a[i]) max=a[i]; return max; }
public static void main(String[] args) { sort("asc",78,25,56,32,45,78,98); // 오름차순 System.out.println(); sort("dese",87,75,23,65,45,8,56,98,78,12); // 내림차순 } // 같은형의 갯수가 정해지지 않은 전달인수와 다른 자료형의 전달인수가 동시에 // 전달되어야 한다면 반드시 ...으로 처리할 데이터들보다 왼쪽에 전달되게 // 위치시킴 public static void sort(String order, int...a) { if(order.equals("asc")) { for(int i=0; i<a.length; i++) { for(int j=i+1; j<a.length; j++) { if(a[i]>a[j]) { int temp=a[i]; a[i]=a[j]; a[j]=temp; } } } } else { for(int i=0; i<a.length; i++) { for(int j=i+1; j<a.length; j++) { if(a[i]>a[j]) { int temp=a[i]; a[i]=a[j]; a[j]=temp; } } } } for(int i=0; i<a.length; i++) System.out.printf("%d ",a[i]); }
public static void main(String[] args) { int [][]scores; double[]avg; int s=getStudentNumber(); // 학생수를 입력받아 리턴하는 메서드 int k=getSubjectNumber(); // 과목수를 입력받아 리턴하는 메서드 scores=new int[s][k+1]; avg=new double[s]; input(scores); // s명의 학생의 k개의 과목 점수 입력 clas(scores,avg); // 총점, 평균 계산 output(scores,avg); // 성적표 출력 } public static void output(int[][] s, double[] a) { int stdNum=s.length; int subNum=s[0].length-1; System.out.println("\t\t===성적표==="); System.out.println("----------------------------------------------"); System.out.printf("번호\t"); for(int i=0; i<subNum; i++) System.out.printf("과목%d\t",i+1); System.out.printf("총점\t평균\n"); System.out.println("----------------------------------------------"); for(int i=0; i<stdNum; i++) { System.out.printf("%d\t",i+1); //number for(int j=0; j<subNum+1; j++) { System.out.printf("%d\t",s[i][j]); } System.out.printf("%.1f\n",a[i]); } System.out.println("----------------------------------------------"); } public static void clas(int[][] s, double[] avg) { for(int i=0; i<s.length; i++) { for(int j=0; j<s[i].length-1; j++) { s[i][s[i].length-1]+=s[i][j]; } avg[i]=s[i][s[i].length-1]/(double)s[i].length-1; } return; } private static void input(int[][] s) { Scanner sc=new Scanner(System.in); for(int i=0; i<s.length; i++) { for(int j=0; j<s[i].length-1; j++) { System.out.printf("%d student - score of %d subject: ",i+1,j+1); s[i][j]=Integer.parseInt(sc.nextLine()); } } } public static int getSubjectNumber() { Scanner sc=new Scanner(System.in); System.out.printf("number of subjects: "); return Integer.parseInt(sc.nextLine()); } public static int getStudentNumber() { Scanner sc=new Scanner(System.in); System.out.printf("number of student: "); return Integer.parseInt(sc.nextLine()); }
'언어 > JAVA' 카테고리의 다른 글
[JAVA] 접근지정자(AccessModifier) (0) 2022.09.07 [JAVA] Class (0) 2022.09.07 [JAVA] for문 (0) 2022.09.07 [JAVA] Method (0) 2022.09.07 [JAVA] 삼항연산자(Ternary operator) (0) 2022.09.07