ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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

    댓글

Designed by Tistory.