Błąd w zadaniu ,sortowanie tablicy JAVA

Odpowiedz Nowy wątek
2017-11-14 17:51
0

Witam , próbuję napisać w javie program do sortowania liczb w tablicy , nie wiem dlaczego ale znajduje tylko jedną maksymalną liczbe a potem juz jakby ją zapisuje i nie szuka dalej , może ktoś pomóc? np przy wpisaniu liczb do tablicy ( 7,12,6,9) program wypisuje 4 razy liczbę 12
poniżej kod :

import java.util.Scanner;
public class LiczbyPierwsze {
 
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        //program do sprawdzania czy podana liczba jest liczbą pierwszą
 
        Scanner odczyt = new Scanner(System.in);
        System.out.println("Z ilu elementów będzie się składać tablica? ");
        int wielkoscTab = odczyt.nextInt();
        System.out.println("Tablica będzie się składać z " + wielkoscTab + " elemenów");
        int tablica[] = new int[wielkoscTab]; //nadanie wielkosci tablicy
 
        //wpisywanie elementow do tablicy
        for(int i=0; i<tablica.length;i++)
        {
            System.out.println("Podaj " + (i+1) + " element tablicy ");
            Scanner czytajLiczbe = new Scanner(System.in);
            int liczba = odczyt.nextInt();
            tablica[i]=liczba;      
        }
 
        /*wyswietlenie tablicy
        System.out.println("Oto elementy tablicy: ");
        for(int i=0; i<tablica.length;i++)
        {
            System.out.print(tablica[i]+",");
        }
        System.out.println("");
        */
 
        //sortowanie tablicy
 
        int max=0;
        int pozycja=0;
        System.out.println("Liczby posortowane malejąco to:");
        for(int j=0;j<tablica.length;j++)
        {
            for(int i=0;i<tablica.length;i++)
            {
                if(max<tablica[i])
                {
                    max=tablica[i];
                    pozycja=i;
                }
                tablica[pozycja]=0;
            }
            System.out.println(max+",");
        }
    }
}
edytowany 1x, ostatnio: hauleth, 2017-11-14 20:36

Pozostało 580 znaków

2017-11-14 18:54
1

wystarczy, że będziesz resetował wartość max po każdym wyjściu z wewnętrznej pętli for, a w celu uniknięcia zerowych indeksów w tablicy wystarczy najpierw je wyświetlac potem zerować

        for(int j=0;j<tablica.length;j++)
        {
            for(int i=0;i<tablica.length;i++)
            {
                if(max < tablica[i])
                {
                    max = tablica[i];
                    pozycja = i;
                }
            }
            System.out.println(max+",");
            max = 0;
            tablica[pozycja] = 0;
        }

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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