PeakyDuck Napisano Maj 11, 2019 Zgłoś Udostępnij Napisano Maj 11, 2019 Witam Mam problem ze zliczaniem danych w tablicy. Mianowicie przy dwuwymiarowej tablicy muszę dla każdego ostatniego jej elementu w rzędzie policzyć ile jest jego możliwych różnych wystąpień wartości oraz ile razy każda z tych wartości występuję. Na razie staram się to zrobić na przykładowej małej tablicy sprawdzając czy wszystko się zgadza. Wymyśliłem, że skoro do kolekcji elementy dodawane są bez powtórzeń to łatwo określić samą ich liczbę jako opcji wartości, jednak nie mam pojęcia jakbym mógł jeszcze zliczyć ich ilość dla każdej nich. Jeśli chodzi o try-catch to jest on dlatego że wychodziłem poza tablice przy ostatniej iteracji(do końca też nie rozumiem dlaczego), wiem że jest to bardzo "studenckie" obejście problemu. (Mam nadzieję, że w miarę zrozumiale opisałem mój problem, dopiero zaczynam a to mój pierwszy post tutaj ;) ) import java.util.HashSet; import java.util.Set; public class Main { public static void main(String[] args) { int zmienna = 0; Set<Integer> zbior = new HashSet<Integer>(); int[][] tab = new int[][] { { 1, 2, 3, 4, 5 }, { 6, 7, 8, 9, 10 }, { 11, 12, 13, 14, 15 }, { 16, 17, 18, 19, 20 }, { 16, 17, 18, 19, 20 }, { 16, 17, 18, 19, 20 }, { 16, 17, 18, 19, 20 }, { 16, 17, 18, 19, 20 } }; System.out.println(tab.length); System.out.println("====="); try { for (int i = 0; i < tab.length; i++) { for (int j = 0; j < tab[i].length; j++) { zmienna = tab[i][tab[j].length - 1]; zbior.add(zmienna); for (int j2 = 0; j2 < tab.length; j2++) { for (int k = 0; k < tab[j2].length; k++) { if (zmienna == tab[i][tab[j].length - 1]) { } else { } } } System.out.println(tab[i][tab[j].length - 1]); i++; } // System.out.println(); } } catch (Exception e) { System.out.println("KONIEC"); } for (int lol : zbior) { System.out.println(lol); } } } Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
learn code with me Napisano Wrzesień 9, 2023 Zgłoś Udostępnij Napisano Wrzesień 9, 2023 - W tym wypadku zamiast używać try-catch lepiej jest użyć odpowiednich warunków w pętlach. - W kodzie masz zagnieżdżone pętle, ale nie jest jasne, co chcesz osiągnąć wewnątrz nich. - Używasz HashSet do przechowywania unikalnych wartości, co jest dobrym pomysłem, ale nie zliczasz wystąpień tych wartości. Kod z przykładem jak zliczyć unikalne wartości oraz ich wystąpienia: import java.util.HashMap; import java.util.Map; public class Main { public static void main(String[] args) { int[][] tab = new int[][] { {1, 2, 3, 4, 5}, {6, 7, 8, 9, 10}, {11, 12, 13, 14, 15}, {16, 17, 18, 19, 20}, {16, 17, 18, 19, 20}, {16, 17, 18, 19, 20}, {16, 17, 18, 19, 20}, {16, 17, 18, 19, 20} }; // Używamy HashMap do przechowywania unikalnych wartości Map<Integer, Integer> countMap = new HashMap<>(); for (int i = 0; i < tab.length; i++) { int lastElement = tab[i][tab[i].length - 1]; // ostatni element w rzędzie // Zliczanie countMap.put(lastElement, countMap.getOrDefault(lastElement, 0) + 1); } // Wyświetlenie for (Map.Entry<Integer, Integer> entry : countMap.entrySet()) { System.out.println("Wartość: " + entry.getKey() + ", Liczba wystąpień: " + entry.getValue()); } } } tu możesz znaleźć darmowy kurs Javy dla początkujących: https://codeme.pl/blog/java-dla-poczatkujacych Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.