2014-10-05 1 views
-1

여기 또 다른 문제가 있습니다. 당신은 내 코드와 출력을 읽는 즉시 내 뜻을 이해할 것이다. 배열의 번호와 그 배열을 인쇄하려고합니다. !!! 불행히도 가져 오기 코드를 사용할 수 없습니다 ... !!!내 코드가 개별적으로 어커런스를 쓰고 있습니다.

내 배열에 5, 6 및 5를 추가하면; (내가 추가 작업을 처음 만들 때 배열이 0이되고 커질 때까지)

출력 : 숫자 5는 1 번 발생합니다. 숫자 6이 1 번 발생합니다. 숫자 5는 한 번 발생합니다.

내 추가 작업이 BTW입니다 : 이것에 대한

 int[] Bag = new int[0]; 
     String name = scanner.next(); 

     if (name.equals("A")){ 
     int number = scanner.nextInt();  
     NewBag[NewBag.length - 1] = number; 
     for(int i = 0; i < Bag.length; i++){ 
     NewBag[i] = Bag[i];} 
     Bag = NewBag; 
     System.out.println(number + " added to Bag.");} 
+1

5, 6 및 5를 추가하는 코드를 게시 할 수 있습니까? 어쩌면 잘못되었는지 설명하는 데 도움이 될 수 있습니다. – Chronio

+0

이것은 "히스토그램"처럼 보입니다. 아마 "히스토그램"을 위해 Google에 도움이 될 것입니다. 이것에 대한 좋은 질문/답변이 있습니다. (http://stackoverflow.com/questions/13106906/how-to-create-a-histogram-in-java) – Matthias

+0

우리가 읽을 때 우리가 이해할 수 있다고 믿게 만드는 이유는 무엇입니까? 당신의 코드? 야생 추측으로 나는 fr [i]보다는 fr [Bag [i]]을 증가시키고 싶다고 생각합니다. 하지만 ArrayIndexOutOfBoundsExceptions가 생성 될 것입니다 ... –

답변

0

다른 문제가 있지만 여기에해야 할 일이 있습니다.

int[] fr = new int[10000];// modified 
for(int i = 0; i < Bag.length; i++) 
    fr[Bag[i]]++; // Here 
for(int i = 0; i < fr.length; i++) { 
    if(fr[i] > 0) 
     System.out.println("The number " + Bag[i] + " occurs " + fr[i] + " time(s).");}} 

백 배열의 최대 및 최소 숫자는 얼마입니까? Say Bag=new int[10]이고 범위는 0-10000입니다. 그렇다면 fr=new int[10001];

가 좋아, 다른 문제에, 나는 당신이 내가 제대로 이해한다면, 당신은 INT의 상위을

int[] Bag = new int[0]; 
    String name = scanner.next(); 
    int[] NewBag; 
    if (name.equals("A")){ 
     int number = scanner.nextInt();  
     NewBag = new int[Bag.length+1];// resize the array 
     NewBag[NewBag.length - 1] = number; 
     for(int i = 0; i < Bag.length; i++){ 
      NewBag[i] = Bag[i]; 
     } 
     Bag = NewBag; 
     System.out.println(number + " added to Bag."); 
    } 
+0

예, ArrayIndexOutOfBoundsException 오류가 발생합니다. 하지만 배열의 길이를 0으로 만들지 않고 연산을 추가하는 방법을 모르겠습니다. – HalilM

+0

@HalilM, 첫 번째 라인을 수정하여 코딩을 얻으려면 일시적으로 고정 된 크기의 fr을 가지려고합니다. –

+0

음, 방금 10000으로 수정했습니다. 같은 오류가 다시 나타납니다. 나는 Bag 배열의 길이를 0으로 유지하는 한이 에러를 줄 것이라고 생각한다. – HalilM

1

더 나은 사용지도.

Map<Integer,Integer> occurences= new HashMap<Intege,Integer>(); 
for(int bagValue: bag){ 
int counter = occurences.hasValue(bagValue)? occurences.get(bagValue): 0; 
occurences.put(bagValue, counter++) 
} 

이 작업에는 더 민첩하고 메모리는 덜 필요합니다.

+0

| 가방의 값은 바 길이보다 클 수 있음을 기억하십시오. 모든 것을 배열에 저장하려면 최대 값을 알아야했습니다. – Beri

0

가방의 크기를 증가하려고했던, 당신은 각각에 대해 알고 싶어했다 은 그것의 int로 발생 횟수

왜냐하면 배열을 반복해야하고 이미 배열에 삽입 된 경우 각각의 새 int를 확인해야합니다. 그렇다면 새로운 정수를 각각 증가시켜야합니다.

int flag = 1 
for (i=0; i<Bag.length;i++){ 
    for(j=0;j<fr.length;j++){ 
     if(Bag[i] == fr[j]){ 
      fr[j]++; 
      flag = 0; 
      break; 
     } 
    if(flag){ 
     fr[i}++; 
    } 
} 
관련 문제