2dimensionales Array

Status
Nicht offen für weitere Antworten.

babuschka

Top Contributor
Hey Leute, ich wollte ein 2-dimensionales array schreiben, es soll alle geraden zahlen ausgeben, und immer da , wo es eine ungerade zahl gibt soll es ne "0" hinzufügen
Hey Leute könnt ihr mir mal sagen , wieso das array nicht funktioniert:
Es soll nur alle geraden zahlen ausgeben, und immer da , wo es eine ungerade zahl gibt soll es ne "0" hinzufügen,

Java Code:
Java:
public class g{
	public static void main (String[]args){
		
		String array[][]=new String [10][10];
		for(int i=0;i<10;i++){
			for(int j=0;j<10;j++){
	if(i+j%2==0){
	System.out.print(array[i][j]+" " );
	
	}
	
	else{
	System.out.print("0");
	
			}
			}
		System.out.println();
		}
		
	}
}
könnt ihr mir da helfen? ich glaub ich hab hier einiges falsch nur weiß nicht genau was
danke im vorraus
 
Zuletzt bearbeitet von einem Moderator:
N

nillehammer

Gast
-In den if-Zweig schreibe:
Java:
System.out.println(array[i][j]);
- In den else-Zweig schreibe:
Java:
System.out.println(0);
- Überprüfe Deine if-Bedingung. Die sieht merkwürdig aus. Du prüfst, ob die Summe aus Zeilen- und Spaltenindex gerade ist. Willst Du das wirklich? Oder willst Du prüfen, ob der aktuelle Wert gerade ist?
 

VfL_Freak

Top Contributor
Hallo ako,

bin mir auf die Schnelle nicht ganz sicher, denke aber, das Modulo stärker bindet !
Versuch' mal

Java:
if( (i+j) % 2 == 0 )

Gruß
Klaus
 
N

nillehammer

Gast
Und was mir noch grad auffält. In dem Array stehen überall Nullen. int-Arrays werden nämlich defaultmäßig mit 0 in jedem Feld initialisiert.
 

babuschka

Top Contributor
danke für die antworten
meint ihr es so:

Java:
public class g{
public static void main (String[]args){
 
int array[][]=new int [10][10];
for(int i=0;i<10;i++){
for(int j=0;j<10;j++){

if((i+2)%2==0){
System.out.println(array[i][j]);
} else {
System.out.println(0);
}
 
}
}
}
}

also das funktioniert immer noch nicht so ganz hmm
 
N

nillehammer

Gast
Was soll das jetzt für eine Bedingung sein? Nochmal die Frage: Willst Du prüfen, ob der aktuelle aus dem Array ausgelesene Wert gerade ist oder irgend was anderes? Das müsstest Du dann bitte genau sagen.
 

babuschka

Top Contributor
also ich hab ja 100 felder in dem array, und da wo eine gerade zahl ist , soll die gerade zahl ausgegebene werden, aber da wo ne ungerade zahl ist soll ne 0 hin
:)
klappt leider immer noch nicht so ganz
 
N

nillehammer

Gast
Gut, also willst Du den aus dem Array ausgelesenen Wert überprüfen und nicht "Laufvariable i plus 2". Dann muss die Bedingung so aussehen:
Java:
if (array[i][j] % 2 ==0)
Mit Deinem aktuellen Array:
Java:
int array[][]=new int [10][10];
wirst Du aber nur Nullen sehen, weil er nur Nullen enthält. Für sinnvollere Testergebnisse solltest Du Deinen Array mit etwas anderem füllen als Nullen.
 

babuschka

Top Contributor
also es soll so sein:
Java:
public class g{
public static void main (String[]args){
 
int array[][]=new int [10][10];
for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
int zahl=10*i+j;
if (zahl%2==0){
array[i][j]= zahl;
}

System.out.print(array[i][j] + " ");
}
System.out.println();
}
 
}
}

aber kann mir jemand sagen wieso das in der zeile nur bis 9,19,29,39 usw. geht aber nicht bis 10,20,30 usw.???
 
N

nillehammer

Gast
Array-Indieces fangen bei 0 an zu zählen. Ein Array der Länge 10 hat also die Indices 0 bis 9. Und langsam fühl ich mich etwas ver***t. Du machst im Code immer was völlig anderes als, das was Du in Deinem Text schreibst, was Du möchtest. Das macht es extrem schwer, zu helfen. Ich bin jetzt raus. Viel Spaß noch
 

VfL_Freak

Top Contributor
Moin,

aber kann mir jemand sagen wieso das in der zeile nur bis 9,19,29,39 usw. geht aber nicht bis 10,20,30 usw.???
Was genau meinst Du denn mit "in der Zeile" ???:L

Nun gehen ja Deine Zählvariablen von 0 - 9 und nicht von 1 - 10 (warum im Übrigen für Arrayindexe völlig richtig ist). Du solltest dann aber für die zu prüfenden Zahlen jeweils inkrementieren!

Vlt. ist es so schon besser:
Java:
public class g
{
  public static void main (String[]args)
  {
    int array[][] = new int[10][10];
    for(int i=0; i<10; i++)
    {
      for( int j=0; j<10; j++ )
      {
        int zahl=10*i+j;  // entspr. zahl=(10*i) + j !!
                          // warum '*10' ???
                          // zudem: 10*0 + 0 bleibt 0!
                          // soll es hier vlt. eine 1 sein ?? 
        if (zahl%2==0)
        {
          array[i][j] = zahl;  // ok, ist 'ne gerade Zahl'
        }
        else
        {
          array[i][j] = 0;  // 'ne ungerade Zahl'
        }
        System.out.print(array[i][j] + " ");
      }
      System.out.println();
    }
  }
}

Welcher Zahlenbereich soll denn überhaupt bearbeitet werden ??

Gruß
Klaus
 
H

hüteüberhüte

Gast
...habe dir mal eben eine kommentierte main geschrieben:
Java:
    public static void main(String[] args) {

        int[][] iaa = new int[10][10];

        // befüllen (da jetzt jedes Element 0 ist)...
        for (int i = 0; i < iaa.length; i++) { // .lenght liefert 10, Schleife geht bis 9
            for (int j = 0; j < iaa[i].length; j++) { // .length liefert auch 10
                iaa[i][j] = i * 10 + j; // 0,...,9, 10, 11 usw. 99
            }
        }

        // alle ungeraden Elemente sollen 0 sein...
        for (int i = 0; i < iaa.length; i++) {
            for (int j = 0; j < iaa[i].length; j++) {
                if (iaa[i][j] % 2 == 1) {
                    iaa[i][j] = 0;
                }
                // else nicht benötigt
            }
        }

        // und ausgeben...
        for (int[] ia : iaa) {
            System.out.println(java.util.Arrays.toString(ia));
        }

    }
Ausgabe:
Code:
[0, 0, 2, 0, 4, 0, 6, 0, 8, 0]
[10, 0, 12, 0, 14, 0, 16, 0, 18, 0]
[20, 0, 22, 0, 24, 0, 26, 0, 28, 0]
[30, 0, 32, 0, 34, 0, 36, 0, 38, 0]
[40, 0, 42, 0, 44, 0, 46, 0, 48, 0]
[50, 0, 52, 0, 54, 0, 56, 0, 58, 0]
[60, 0, 62, 0, 64, 0, 66, 0, 68, 0]
[70, 0, 72, 0, 74, 0, 76, 0, 78, 0]
[80, 0, 82, 0, 84, 0, 86, 0, 88, 0]
[90, 0, 92, 0, 94, 0, 96, 0, 98, 0]
...ist das richtig so/so gewollt?
 
H

hüteüberhüte

Gast
In diesen Fall würde es auch ganz ohne Modulo-Operator gehen (Begründung steht im Code):
Java:
    public static void main(String[] args) {

        int[][] iaa = new int[10][10];

        for (int i = 0; i < iaa.length; i++) {
            for (int j = 0; j < iaa[i].length; j++) {
                iaa[i][j] = i * 10 + j;
            }
        }

        for (int i = 0; i < iaa.length; i++) {
            for (int j = 1; j < iaa[i].length; j += 2) { // Schrittweite 2
                iaa[i][j] = 0;
                /* 
                 * das ist möglich, 
                 * weil das Array mit den aufeinander
                 * folgenden Zahlen von 0 bis 99 gefüllt wurde,
                 * und feststeht,
                 * in/an/bei welchen Indices ungerade Zahlen sind
                 * 
                 */
            }
        }

        for (int[] ia : iaa) {
            System.out.println(java.util.Arrays.toString(ia));
        }

    }
 

xehpuk

Top Contributor
Dann kann man auch gleich nur jede gerade Zahl eintragen.
Java:
public static void main(String[] args) {
	int[][] iaa = new int[10][10];
	
	for (int i = 0; i < iaa.length; i++) {
		for (int j = 0; j < iaa[i].length; j+=2) { // 2er-Schritte
			iaa[i][j] = i * 10 + j;
		}
	}
	
	for (int[] ia : iaa) {
		System.out.println(java.util.Arrays.toString(ia));
	}
}
 
H

hüteüberhüte

Gast
...ja, aber es geht doch darum, es so anschaulich wie möglich zu gestalten. Einmal jeder Arrayindex, einmal jeder Zweite und eine for-each-Schleife. Solange sich ako nicht näher dazu geäußert hat, sind es auch nur Vermutungen.
 
F

Firephoenix

Gast
Kann mir mal jemand erklären warum der Thread auf einmal von babuschka mit 1.3k beiträgen ist und nicht mehr von ako mit 45 Beiträgen? :D

Bei dem Thread ist das ja nichtmal so schlimm, aber gewisse Posts von ako aus dem anderem Thread hatten schon nicht mehr einen so netten Tonfall den man gerne in seiner Beitragsliste haben will.

Gruß
 
S

SlaterB

Gast
babuschka hat die undankbare Aufgabe, alle Postings (meist freiwillig) gelöschter User aufzunehmen,
aber keine Sorge wegen Filter oder so, babuschka wird dich nicht von selber aus mit neuen Postings behelligen ;)

der sitzt in seinem babuschka-Haus, trinkt nur babuschka-Cola und überlegt, welche nächste Wahl die Piraten gewinnen müssen
 
H

hüteüberhüte

Gast
ako/babuschka haben sich ja nicht mehr dazu geäußert. Vielleicht wurden die beiden Accounts unter babuschka zusammengefasst? Das könnte eine Möglichkeit sein. Aber in diesen Thread wurde doch gaaar nichts schlimmes geschrieben?:D
 
H

hüteüberhüte

Gast
babuschka hat die undankbare Aufgabe, alle Postings (meist freiwillig) gelöschter User aufzunehmen,
aber keine Sorge wegen Filter oder so, babuschka wird dich nicht von selber aus mit neuen Postings behelligen ;)

der sitzt in seinem babuschka-Haus, trinkt nur babuschka-Cola und überlegt, welche nächste Wahl die Piraten gewinnen müssen

Dann lässt sich ja nicht mehr erkennen/zurückverfolgen von wem die Beiträge ursprünglich stammten... Das ist natürlich auch eine Möglichkeit Spuren zu verwischen :D Wird das bei jedem gelöschten User so gemacht? ([/OT])
 
S

SlaterB

Gast
dieses Zurückverfolgen ist ja wohl auch nicht nötig, vorhandene Postings sollten sinnerhaltend reichen,
bevor noch mehr komische Fragen kommen: kann man sich doch alles mit etwas Ruhe denken, bei wirklich ernsten Interesse per PN nachfragen,
hier geschlossen
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben