2017-12-03 23 views
0

저는 프로그래밍에 익숙하지 않아 2 개월 전에 Java를 배우기 시작했습니다. 작은 프로그램을 수행하도록 지정되었으므로이 프로그램의 일부는 2D 배열에서 중앙값을 가져와야합니다. 2D 배열은 3 개의 과목과 (N) 개의 학생으로 구성됩니다. 나는 각 과목마다 중간 값을 구해야하지만, 나는 어떻게 각 과목에서 그 수를 어떻게 분류 할 것인지 이해할 수 없다.Java에서 2D Array의 중앙값 가져 오기

내가 도와야 할 도움, 팁 또는 제안은 정말 감사하겠습니다.

+1

, 당신은 정말 할 수 없습니다. 주제에 대한 모든 표시를 포함하는 배열이 3 개가되도록 2D 배열을 조 변경해야합니다. 그러면 배열을 정렬하고 중앙값을 얻을 수 있습니다. –

+0

배열 클래스의 오버로드 된 함수를 사용하여 배열을 정렬 할 수 있습니다. – quantumThinker

답변

-1

고려해 볼 때 arr은 두 값을 포함하는 2D 배열입니다. java.util의 패키지에서 모두 사용할 수있는 다음 코드 여기 배열비교

Arrays.sort(arr, Comparator<double[]>() { 
    public int compare(double a, double b) { 
     return Double.compare(a[0], b[0]); 
    } 
}); 

를 사용합니다. java 8을 사용하는 경우이 작업은 한 줄로 수행 할 수 있습니다.

Arrays.sort(arr, (a,b) -> Double.compare(a[0], b[0])); 
+0

첫 번째 코드 조각에 두 가지 이상의 컴파일 오류가 있습니다. 하지만 그보다 더 나쁜 것은 코드가하는 일을 설명하지 않았거나 질문에 대한 대답이라고 생각하는 이유입니다. 나는 오류에 대한 것이 아니라 설명의 부족에 대해 downvoted. –

-1

사용자 java.util.arrays.sort() 수 있습니다.

import java.util.*; 
public class MyClass { 
public static void main(String args[]) { 
    int N=10; // number of students 
    double[][] array = new double[3][N]; 

    for (int i=0;i<3;i++)  
     for (int j=0;j<N;j++) 
      array[i][j]= // students scores 

    for (int i=0;i<3;i++) { 
     double[] temp = new double[N]; 
     for (int j=0;j<N;j++) 
      temp[j]=array[i][j];  // create an array for each subject 

      Arrays.sort(temp);  // sort each array 
      double median; 
      if (temp.length % 2 == 0) // find median for each case 
       median = ((double)temp[temp.length/2] + (double)temp[temp.length/2 - 1])/2; 
      else 
      median = (double) temp[temp.length/2]; 
      System.out.println("Median of Subject " +(i+1)+" = " + median); 
     } 
    } 
} 

당신이 원하는대로 데이터 형식을 변경할 수 있습니다 ... 레이아웃을 감안할 때

+0

모든 제안을 해주셔서 감사합니다. 나는 그들을 시험해보고 알려 드리겠습니다. –

+0

코드가 포함 된 답변은 실제로 스택 오버플로가 아닙니다. 나는 정기적으로 그들을 downvote. 코드가하는 일에 대한 설명이 포함되어 있고 원래 질문에 대한 올바른 대답이라고 생각하는 이유는 답이 훨씬 더 좋을 것입니다. –