Program który pokazuje ilość wystąpień liczb z wpisanego ciągu

0

Witam. Próbuje napisać program, który wskazuje ilość poszczególnych liczb z wpisanego ciągu liczb. Nie mam innego pomysłu niż taki:

import java.util.Scanner;
import java.util.Random;
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        int liczba=1;
        int [] tablica=new int[9999];



        while(liczba!=0)
        {
            liczba=scan.nextInt();
            tablica[liczba]++;

        }

        for(int i=1;i<=999;i++)
        {
            if(tablica[i]!=0)
                System.out.println(i+" : "+tablica[i]);
        }
    }
}

Może ktoś podpowie?

3

Zapoznaj się z HashMap<>

Albo Stream:

import java.util.Scanner;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class NewClass
{
   private static final Scanner sc=new Scanner(System.in);
   public static void main(String args[])
   {
      System.out.print("count v1 v2 v3 ... vC: ");
      Stream
         .generate(() -> sc.nextInt())
         .limit(sc.nextInt())
         .sorted()
         .collect(Collectors.groupingBy(Function.identity(),Collectors.counting()))
         .entrySet()
         .forEach(e -> System.out.println(String.format("%d: %d",e.getKey(),e.getValue())))
      ;
   }
}

@obscurity: niestety takie proste wymaganie wymaga znacznie więcej kodu ale nie ma rzeczy niemozliwych:

import java.util.Comparator;
import java.util.Map;
import java.util.Scanner;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class NewClass
{
   private static final Scanner sc=new Scanner(System.in);
   public static void main(String args[])
   {
      System.out.print("count v1 v2 v3 ... vC: ");
      Stream
         .generate(() -> sc.nextInt())
         .limit(sc.nextInt())
         .collect(Collectors.groupingBy(Function.identity(),Collectors.counting()))
         .entrySet()
         .stream()
         .sorted
         (
            Comparator
               .comparing(Map.Entry<Integer,Long>::getValue)
               .reversed()
               .thenComparing(Map.Entry<Integer,Long>::getKey)
         )
         .forEach(e -> System.out.println(String.format("%d: %d",e.getKey(),e.getValue())))
      ;
   }
}
0

Nie umiem w Dżawę.

a=[*map(int,input().split())]
cnt=[0]*201
for x in a:
  cnt[100+x]+=1
for x in range(201):
  if 0<cnt[x]:
    print(x-100,cnt[x])

1 użytkowników online, w tym zalogowanych: 0, gości: 1