Array einschränken

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Code:
public class Test { 
 static void Einschränken(int[] array){ 
     // x hochzählen und w runterzählen um Array einzuschränken 
     
        int x = 0, w = array.length-1; 
        while(x<array.length/2){ 
                for(int i=x; (i > array[i]) && (i < array[w-x]); i++){ 
                println(array[i]); 
                }        
                x++; 
        } 
 } 
 public static void main(String[] args) { 
                int[] array = {99, 15, 4, 23, 1, 7}; 
                Einschränken(array); 
 } 
}
 
Hallo Leute, ich habe hier versucht mein Array einzuschränken was leider nicht funktioniert, könnt ihr mir helfen was ich hier genau falsch gemacht habe ?

Danke
 
was meinst du mit "einschränken"? ich versteh nicht ganz was du vor hast..

Methoden schreibt man klein
 
ja mir ist auch net ganz klar was du damit bezwecken willst, wenn ich deine for-schleife für dieses gegebene array und für i=x (initial 0) durchspinne dann hast du nicht eine ausgabe drin oder?

weil: (i > array) && (i < array[w-x]) .. wäre ja sowas wie: (i>99) && (i<7) .. das is schonma false .. x geht hoch und so weiter ... eigentlich wird die for-schleife in dem beispiel nie ausgeführt wenn ich das recht sehe

Was genau willst du bezwecken?
 
Also mit einschränken meinte ich. Wenn ich z.B. Array = 99, 15, 4, 23, 1, 7 das nach dem ersten durchlauf die 99 ganz links und die 7 ganz recht wegfällt -> Array = 15, 4, 23, 1

Ich hatte mir gedacht, dass ich mit 0 anfange deshlab i = x also i = 0 und bei jedem durchlauf wird x erhöht und w verringert, so enge ich die Schleife immer weiter ein.

1. Durchlauf: i > array[0] && i < array[5] ---> x++; w--;
2. Durchlauf: i > array[1] && i < array[4] ----> x++; w--;
3. Durchlauf: i > array[2] && i < array[3]

usw. ich will dann immer nur für diesen Bereich das array ausgegeben haben.
 
??
for(int i=x; (i > array) && (i < array[w-x]); i++){
versteh ich nicht...

Code:
public class Test {
	public static void main ( String [] args ){
		
		int[] array = {99, 15, 4, 23, 1, 7};
		int x = 0;
		while(x<array.length/2){ 
            for(int i=x; i<array.length-x; i++){ 
            	System.out.print(array[i]+" "); 
            }        
            x++; 
            System.out.println();
		}
    } 
}
 
schau mal x wird doch außerhalb mit 0 initialisiert deshlab wird das array im erste durchlauf ab der stelle 0 also array[0] ausgegeben und das ganze bis zu stelle 5 weil w = 5
--> array[0] - array[5] also
Code:
array[0] = 99 
array[1] = 15
array[2] = 4
array[3] = 23
array[4] =  1
array[5] = 7

am ende der while schleife wird das x erhöhte und w verringert also x = 1 und w =4 und mit dem int i=x fängt die for schleife ab 1 an und die bedingung ist dann array soll ausgegeben werden für i >= array) && (i <= array[w-x])
also:
Code:
array[1] = 15
array[2] = 4
array[3] = 23
array[4] =  1

usw. ICH HABE DAS SO VERSUCHT AUSZUGEBEN ABER ER GIBT GAR NICHTS AUS
 
die bedingung an sich ist aber der fehler in deinem code. Du fragst dabei den inhalt der Array-elemente ab und sagst:

wenn i > ... UND (logisches und) i < ... dann wird die schleife nochmal ausgeführt.
wie in meinem post beschrieben wird diese schleife für dein beispielarray nie ausgeführt, weil einfach die inhalte des arrays diese bedingung nie erfüllen können.

probiers ma mitm zettel 😀 und schreib die variablen auf, dann siehst du das ergebnis der bedingung besser.
und wichtig, es ist ein logisches und .. sprich i > 99 und i < 7 oder so, das geht nicht 😀
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben