2013-02-20 2 views
-1

사용자로부터 입력 순서를 얻는 방법이 다르지만 어떻게해야할지 모릅니다. 여기 내 코드가있다. 크기 N 인 배열 A의 주 요소는 N/2 회 이상 나타나는 요소입니다. 예를 들어 (3,3,4,2,4,4,2,4,4)는 대다수 요소 (4)를 갖고 배열 (3,3,4,2,4,4,2,4)는 다수 요소가 없다. 나는 사용자로부터 일련의 입력을 얻으려고 노력하고있다.정수 순서를 얻으려고 시도합니다

import java.util.Scanner; 

class rough1 { 
    public static int arrMajority1(int A[]) { 
     int n = A.length; 
     for(int i = 0; i < A.length; i++) { 
     int c = 1; 
     for(int j = i + 1; j < A.length; j++) 
      if(A[ i ] == A[ j ]) 
       c = c + 1; 
     if(c > (A.length/2)) { 
      return A[ i ]; 
     } 
     } 
     return -1; 
    } 

    public static void main(String[] args){ 
     Scanner input = new Scanner(System.in); 
     int A[] = new int []; 
     A[] = input.nextInt(); 
     String employee = "A[]"; 
     String delims = "[,]"; 
     String[] tokens = employee.split(delims); 
     if (arrMajority1(A) != -1) 
     System.out.println("The majority element is " + arrMajority1(A)); 
     else 
     System.out.println("There is no majority element."); 
    } 
} 
+2

항상 오류 메시지 모두 포함하시기 바랍니다 그러한 문제에 직면 할 때. 이 행'int A [] = new int [];'는 컴파일러 오류를 일으키므로 코드를 실행할 수 없습니다. – jlordo

+0

http://stackoverflow.com/questions/5287538/how-to-get-basic-user-input-for-java – happybuddha

+0

문제가 무엇인지 이해할 수 있습니까? 예를 들어 배열에 6 개의 숫자를 입력 하시겠습니까? 설명 .... – Azad

답변

1

어때요? 난 당신이 하나 개 이상의 대부분의 요소를 가질 수 있다고 가정 한

public static void main(String[] args) throws FileNotFoundException { 
    int[] arrayWithMajorityElements = {3,3,4,2,4,4,2,4,4}; 

    Integer[] majorityElements = getMajorityElements(arrayWithMajorityElements); 
    System.out.println(Arrays.toString(majorityElements)); 
    // result = 4 

    int[] arrayWithoutMajorityElements = {3,3,4,2,4,4,2,4}; 
    majorityElements = getMajorityElements(arrayWithoutMajorityElements); 
    System.out.println(Arrays.toString(majorityElements)); 
    // result = empty array (ie no majory elements) 
} 

private static Integer[] getMajorityElements(int[] array) { 
    Map<Integer, Integer> map = new HashMap<>(); 
    for (int i : array) { 
     int count = 0; 
     if (map.containsKey(i)) { 
      count = map.get(i); 
     } 
     map.put(i, ++count); 
    } 

    List<Integer> majorityElements = new ArrayList<>(); 
    int check = array.length/2; 
    for (Integer i : map.keySet()) { 
     if (map.get(i) > check) { 
      majorityElements.add(i); 
     } 
    } 
    return majorityElements.toArray(new Integer[majorityElements.size()]); 
} 

주 - 다음 마지막 루프를 수정해야 할 것입니다 수없는 경우는

관련 문제