2017-03-17 1 views
0

Hilf mir den Fehler in diesem Code zu finden, ich verstehe nicht, warum es nicht funktioniert. Ich möchte alle eindeutigen Zahlen in einem Array zusammen mit ihrer Häufigkeit anzeigen (wie oft sie auftreten).Methode zum Auffinden von verschiedenen Zahlen in einem Array und ihre Häufigkeit

package myProj; 

import java.util.Scanner; 

public class Freq { 

    static boolean isRepeated(int[] temp,int zz){ 
     int flag=0; 
     int l=java.util.Arrays.asList(temp).indexOf(zz); 
     for(int p=0;p<l;p++){ 
      if(temp[p]==zz){ 
       flag=flag+1; 
      } 
     } 
     if(flag==0){ 
      return false; 
      } 
     else{ 
      return true; 
      } 
    } 

    public static void main(String[] args) { 
     Scanner sc=new Scanner(System.in); 
     System.out.println("enter the no of array elements"); 
     int numOfNumbers = sc.nextInt(); 

     int arrayOfNumbers[] = new int[numOfNumbers]; 
     for (int i = 0; i < numOfNumbers; i++) { 
      System.out.print("Enter the number:"); 
      arrayOfNumbers[i] =sc.nextInt(); 
     } 

     for(int i = 0; i<numOfNumbers; i++){ 
      int z=arrayOfNumbers[i]; 
      if(!(isRepeated(arrayOfNumbers,z))){ 
       int count=0; 
       for(int j=0;j<numOfNumbers;j++){ 

        if(arrayOfNumbers[j]==arrayOfNumbers[i]){ 
         count=count+1; 
        } 
        else{ 
         continue; 
        } 
       } 
       System.out.println("Frequency of "+arrayOfNumbers[i]+"is"+count); 
      } 
      else{ 
       continue; 
      } 
     } 
    } 
} 

Beispiel erwartete Ausgabe für [2, 20, 11, 10, 5, 14, 47, 23, 20, 12, 11, 10]

  • Frequenz von 2: 1 Frequenz von 20 : 2 Häufigkeit von 11: 2 Häufigkeit der 10: 2 Häufigkeit von 5: 1 Frequenz von 14: 1 Frequenz von 47: 1 Frequenz von 23: 1 Frequenz von 12: 1

Bitte helfen Sie meinen Code zu korrigieren anstatt neue Logik vorzuschlagen.

+0

'indexOf()' verwendet in 'wird wiederholt()' gibt das erste Vorkommen der Zahl. Ändern Sie die Methode. –

+0

ersetzen Sie indeOf() durch lastIndexOf() aber warum all dies für die Schleife? Was willst du tun? – esprittn

+0

Umformuliert, um die "Frage" vor (und nach) dem Code zu stellen, und geklärte Phrasierung + Titel. – Virgil

Antwort

0

Sie machen es viel einfacher:

public class Freq { 

    public static void main(String[] args) { 
     Scanner sc = new Scanner(System.in); 
     System.out.println("enter the no of array elements"); 
     int numOfNumbers = sc.nextInt(); 

     Integer[] arrayOfNumbers = new Integer[numOfNumbers]; 
     for (int i = 0; i < numOfNumbers; i++) { 
      System.out.print("Enter the number:"); 
      arrayOfNumbers[i] = sc.nextInt(); 
     } 

     // to remember for what numbers we already count freq 
     List<Integer> tmpList = new ArrayList<>(numOfNumbers); 

     for (Integer number : arrayOfNumbers) { 
      if (!tmpList.contains(number)) { 
       tmpList.add(number); 
       System.out.println("Frequency of " + number + " is " + Collections.frequency(Arrays.asList(arrayOfNumbers), number)); 
      } 
     } 
    } 
} 
Verwandte Themen