• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Java tablice sprawdzenie kodu

VPS Starter Arubacloud
0 głosów
160 wizyt
pytanie zadane 2 marca 2019 w Java przez mn130496 Gaduła (3,530 p.)

Witam 

Jestem studentem informatyki i jakiś czas temu zacząłem naukę Javy.  Na ostatnich laboratoriach dostałem takie zadanie: 

Zapisać trzy tablice wartościami losowymi. Wyznaczyć wartość największą z każdej tablicy. Następnie wyznaczyć wartość największą spośród maksimów tych trzech tablic.

Napisałem taki kod programu:

public class Zad8 {
    public static void main(String[] args) {

    int tab1[] = new int[10];
    int tab2[] = new int[10];
    int tab3[] = new int[10];
    int maximum[] = new int[3];
    Random rand = new Random();
    //Największa wartość z tablicy 1
    for (int i = 0; i < tab1.length; i++){
        tab1[i] = rand.nextInt(51) +99;
    }
    //Wyświetlenie tablicy 1
        for (int i = 0; i < tab1.length; i++){
            System.out.println("tab[" +i+"] : " +tab1[i]);
        }
        int max = tab1[0];
        for (int i = 0; i < tab1.length; i++) {
            if (tab1[i] > max) {
                max = tab1[i];
            }
        }
        System.out.println("Wartość największa z tab1 wynosi:" +max);
        //Największa wartość z tablicy 2
        for (int i = 0; i < tab2.length; i++){
            tab2[i] = rand.nextInt(51) +99;
        }
        for (int i = 0; i < tab2.length; i++){
            System.out.println("tab[" +i+"] : " +tab2[i]);
        }
        int max2 = tab2[0];
        for (int i = 0; i < tab2.length; i++) {
            if (tab2[i] > max2) {
                max2 = tab2[i];
            }
        }
        System.out.println("Wartość największa z tab2 wynosi:" +max2);
        //Największa wartość z tablicy 3
        for (int i = 0; i < tab3.length; i++){
            tab3[i] = rand.nextInt(51) +99;
        }
        for (int i = 0; i < tab3.length; i++){
            System.out.println("tab[" +i+"] : " +tab3[i]);
        }
        int max3 = tab3[0];
        for (int i = 0; i < tab3.length; i++) {
            if (tab3[i] > max3) {
                max3 = tab3[i];
            }
        }
        System.out.println("Wartość największa z tab3 wynosi:" +max3);
            //Wyznaczenie Największej liczby spośród maksimów tych trzech tablic
                maximum[0] = max;
                maximum[1] = max2;
                maximum[2] = max3;
                for (int i = 0; i < maximum.length; i++) {
                    System.out.println("maximum[" +i+ "]: " +maximum[i]);
                }
                int max4 = maximum[0];
                for (int i=0; i < maximum.length; i++) {
                    if (maximum[i] > max4) {
                        max4 = maximum[i];
                    }
                }
                System.out.println("Największa wartość spośród maksimów tych 3 tablic wynosi: " +max4);
        }
    }

 Czy można prościej  napisać ten program niż ja to zrobiłem?, jeśli tak to czy ktoś może mi podpowiedzieć w jaki sposób to zrobić?.Z góry dziękuję za pomoc

pozdrawiam

komentarz 2 marca 2019 przez anonymousProgrammer Początkujący (350 p.)
edycja 2 marca 2019 przez anonymousProgrammer

Nie jestem jakims specem od javy ale mogles dodac tu jakies funkcje i petle foreach zamiast zwyklej petli. Na szybko napisane:

public class Main {
    public static void main(String...args) {

        int []array1 = new int[10];
        int []array2 = new int[10];
        int []array3 = new int[10];
        int []maximumValueOfEachArray = new int[3];

        maximumValueOfEachArray[0] = fillArrayWithRandomNumsAndReturnTheHighest(array1);
        maximumValueOfEachArray[1] = fillArrayWithRandomNumsAndReturnTheHighest(array2);
        maximumValueOfEachArray[2] = fillArrayWithRandomNumsAndReturnTheHighest(array3);

        System.out.println("array1: "); showArray(array1);
        System.out.println("array2: "); showArray(array2);
        System.out.println("array3: "); showArray(array3);
        System.out.println("maxValueOfEachArray: "); showArray(maximumValueOfEachArray);

        int maxElementOfAllArrays = maximumValueOfEachArray[0];
        for (int element : maximumValueOfEachArray) {
            if (maxElementOfAllArrays < element) {
                maxElementOfAllArrays = element;
            }
        }

        System.out.println("Max element of all arrays = " + maxElementOfAllArrays);
    }

    private static int fillArrayWithRandomNumsAndReturnTheHighest(int []array) {
        Random random = new Random();
        int max = random.nextInt(51) + 99;
        array[0] = max;
        for (int i=1; i<array.length; i++) {
            array[i] = random.nextInt(51) + 99;
            if (max < array[i]) {
                max = array[i];
            }
        }
        return max;
    }

    private static void showArray(int []array) {
        for (int element : array) {
            System.out.print(element + " ");
        }
        System.out.println("\n");
    }
}

Wkleilem nasze kody to w moim jest 1627 characters, a u ciebie 2323, bo ja mam funkcje ty nie. Moze ktos inny sie wypowie na ten temat, bo ekspertem nie jestem :P Pozdro

komentarz 2 marca 2019 przez mn130496 Gaduła (3,530 p.)
Dziękuję za pomoc

1 odpowiedź

0 głosów
odpowiedź 7 marca 2019 przez Arkadiusz Fajdek Dyskutant (9,450 p.)

Masz bardzo wiele zduplikowanego kodu. Tutaj takie male uproszczenie. Nie chcialem jakos mega skracac, ale dalo by sie to jeszcze krocej napisac:

public static void main(String[] args) {
        int tab1[] = new int[10];
        int tab2[] = new int[10];
        int tab3[] = new int[10];
        int maximum[] = new int[3];

        List<int[]> arraysCollection = Arrays.asList(tab1, tab2, tab3);

        for (int i = 0; i < arraysCollection.size(); i++) {
            int[] tab = arraysCollection.get(i);
            populateTabWithRandomNumber(tab);
            printTable(tab);
            maximum[i] = findMaxFromTable(tab);
            System.out.println("Wartość największa z tab"+(i+1)+" wynosi:" +maximum[i]);
        }

        System.out.println("Największa wartość spośród maksimów tych 3 tablic wynosi: " +findMaxFromTable(maximum));
    }

    private static int findMaxFromTable(int[] tab) {
        int max = tab[0];
        for (int i = 0; i < tab.length; i++) {
            if (tab[i] > max) {
                max = tab[i];
            }
        }
        return max;
    }

    private static void printTable(int[] tab) {
        for (int i = 0; i < tab.length; i++){
            System.out.println("tab[" +i+"] : " +tab[i]);
        }
    }

    private static void populateTabWithRandomNumber(int[] tab) {
        Random rand = new Random();
        for (int i = 0; i < tab.length; i++){
            tab[i] = rand.nextInt(51) +99;
        }
    }

 

Podobne pytania

0 głosów
4 odpowiedzi 633 wizyt
pytanie zadane 6 grudnia 2016 w C i C++ przez mateusz0307 Nowicjusz (170 p.)
0 głosów
6 odpowiedzi 996 wizyt
pytanie zadane 8 lutego 2017 w C i C++ przez cubus Początkujący (430 p.)
0 głosów
1 odpowiedź 307 wizyt
pytanie zadane 12 stycznia 2019 w Java przez mn130496 Gaduła (3,530 p.)

92,452 zapytań

141,262 odpowiedzi

319,085 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...