Array

Siisii92

Mitglied
was ist hier falsch in meinem Code?
1645354848668.png
Java:
public class KLAUSUR19 {
    public static void main(String [] args) {
        
        int[] feld= {1,7,13,-5,2,27,11,4,51};
        umkehr(feld);
        
        
        
    }
    
public static void umkehr(int[] feld) {
        
        

int tmp=0;
int k=feld.length-1;
assert(feld !=null);

if(feld.length%2 ==0) {
    for(int i=0;i<feld.length/2;i++) {
        
        tmp=feld[i];
        feld[i]=feld[k];
        feld[k]=tmp;
        
        k--;
        System.out.print(feld[i]+" ");
    }
}
else
    if(feld.length%2 !=0) {
    for(int i=0;i<feld.length+1/2;i++) {
        tmp=feld[i];
        feld[i]=feld[k];
        feld[k]=tmp;
        k--;
        System.out.print(feld[i]+" ");
    }
    }





    }
    }
 

Siisii92

Mitglied
[CODE lang="java" title="es ist immer noch falsch"]else
if(feld.length%2 !=0) {
for(int i=0;i<(feld.length+1)/2;i++) {
tmp=feld;
feld=feld[k];
feld[k]=tmp;
k--;
System.out.print(feld+" ");
}
}
[/CODE]
 

temi

Top Contributor
Die Ausgabe sollte nicht in der Methode stattfinden. Da die nur bis zur Hälfte des Feldes läuft, wird auch nur die Hälfte ausgegeben.

Nimm stattdessen in der main(): System.out.println(Arrays.toString(feld));
 

temi

Top Contributor
Nebenbei noch:
Java:
public static void umkehr(int[] feld) {
    int tmp=0;
    int k=feld.length-1; // hier wird es bereits zu einer NullpointerException kommen
    assert(feld !=null); // dies wird nicht mehr erreicht
 

Jw456

Top Contributor
Dies ist meine Programmausgabe und sollte nicht so sein, aber ich weiß nicht,was hab ich falsch gemachtAnhang anzeigen 17637
bei ungerade musst du eins abziehen nicht plus
"for(int i=0;i<feld.length+1/2;i++) {"

wenn du 9 elemente hast wie oft musst du tauschen? 4 mal
in der mitte musst du nichts machen .

was machst du

9 elemente + 1 = 10 durch zwei ist 5 mal tauschen. Ist Falsch du brauchst nur 4 mal tauschen.


Java:
for(int i=0;i<(feld.length-1)/2;i++) {
bei ungerade
 
Zuletzt bearbeitet:

Jw456

Top Contributor
Java:
public class KLAUSUR19 {
    public static void main(String[] args) {

        int[] feld = {1, 7, 13, -5, 2, 27, 11, 4, 51};
        System.out.println(Arrays.toString(feld));

        umkehr(feld);
        System.out.println(Arrays.toString(feld));
    }

    public static void umkehr(int[] feld) {
        assert (feld != null);
        int tmp = 0;
        int k = feld.length - 1;
        int count;

        if (feld.length % 2 == 0) {
            count = feld.length / 2;
        } else {
            count = (feld.length - 1) / 2;
        }

        for (int i = 0; i < count; i++) {
            tmp = feld[i];
            feld[i] = feld[k];
            feld[k] = tmp;
            k--;
        }
    }
}
 
Zuletzt bearbeitet:

Jw456

Top Contributor
Wie auch schon gesagt wurde brauchst du die Unterscheidung nach Gerade oder ungerade nicht machen.
Denn bei einer Ganzzahldivision kommt bei 9 durch 2 auch nur 4 als Ergebnis raus.

Habe es nur zur Verdeutlichung in dem Code mitgenommen.
 

Neue Themen


Oben