Błąd w zadaniu ,sortowanie tablicy JAVA

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+",");
        }
    }
}
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;
	    }

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