Sie sind nicht angemeldet.

Matt

Fuck me, I'm famous

  • »Matt« ist der Autor dieses Themas

Beiträge: 214

Wohnort: Nähe Bodensee

Beruf: Informatikkaufmann

Danksagungen: 6

  • Nachricht senden

1

11.01.2010, 02:05

JAVA: Array Problem

Hi, hab schon wieder ein Problem ;)

Quellcode

1
2
3
4
5
6
7
8
9
10
for(int z=0; z<1; z++)
				{
					for(int s=4; s>=0; s--)
					{
						outputMatrix[z][s]=number;
						number++;
						System.out.print(outputMatrix[z][s]+"\t");
					}
					System.out.println();
				}




Die Ausgabe sollte so aussehen:

Quellcode

1
5	4	3	2	1



Aber es kommt so raus:

Quellcode

1
1	2	3	4	5



Ich fang gleich an zu heulen! Warum geht das nicht?? Den kompletten Quelltext hab ich euch mal angehängt, dürfte aber weniger von Bedeutung sein. Hab die gleiche Schleife schonmal im Quelltext verwendet und da ging das! Das Wäre Zeile 53-61 in der Methode "spirale()"

Da steckt bestimmt ein Denkfehler dahinter.

Siehe Aufgabe 5.3. Hänge grad an der ZickZack Ausgabe. Weil der blöde Array die Felder nur vorwärts beschreibt und net rückwärts. Wie gesagt, blöde Aufgabe! :D

Danke Euch Vielmals!

gruß, mätt

turbo

Schüler

Beiträge: 142

  • Nachricht senden

2

11.01.2010, 09:46

wenn du die ausgabe des arrays außerhalb der schleife machen würdest, wäre alles io. du fülltst das array quasi von hinten und gibst die daten sofort nach dem schreiben wieder aus. du schreibst in outputMatrix[0][4] die 1, in outputMatrix[0][3] die 2 usw. im array steht jetzt aber (von vorne nach hinten gelesen) 5 4 3 2 1.

weil du dir eine for-schleife für die ausgabe ersparen wolltest, hast du dich selbst hinters licht geführt. ;)

deine andere frage verstehe ich nicht. du kannst arrays in beliebiger reihenfolge beschreiben, auch kreuz und quer, wie du gerade lustig bist.

Matt

Fuck me, I'm famous

  • »Matt« ist der Autor dieses Themas

Beiträge: 214

Wohnort: Nähe Bodensee

Beruf: Informatikkaufmann

Danksagungen: 6

  • Nachricht senden

3

11.01.2010, 12:16

Hmmm...okay. Werds nochmals versuchen ;) Meld mich dann! ;)

Werbung

excalibur1976

el grande cheffe

Beiträge: 474

Wohnort: Kiel

Beruf: Softwareentwickler

Danksagungen: 44

  • Nachricht senden

4

11.01.2010, 16:14

Ich würde im Anschluss das Array noch (sofern erwünscht) sortieren. Das kannst Du mittels java.util.Arrays.sort(NAME DES ARRAYS) machen. Mehr zum Thema Java.Util.Arrays findest Du hier: http://java.sun.com/javase/6/docs/api/java/util/Arrays.html
Software: Windows 7, Cubase 5, Cubasis AV ;), Renoise 2.6, Novation Bass Station VSTi, Sylenth1, several Samples-Libaries. Hardware: AMD Phenom II X4 955 Black Edition, 4 GB RAM, SB Audigy 2 ZS Platinum, m-audio axiom 25, Behringer MS20 (active nearfield monitor)

Beiträge: 848

Wohnort: Bad Bentheim

Beruf: IT-Support

Danksagungen: 13

  • Nachricht senden

5

11.01.2010, 21:46

Was muss man nehmen, um das zu verstehen? ?( 8| Sensationeller Thread ;)

Dominus

Karmawhore

Beiträge: 208

Wohnort: Wien

Danksagungen: 14

  • Nachricht senden

6

11.01.2010, 22:02

Das gleiche, wie die anderen Jungs ;)

Werbung

BekkZ

-under construction-

Beiträge: 366

Wohnort: 127.0.0.1

Beruf: FiSi

Danksagungen: 7

  • Nachricht senden

7

12.01.2010, 07:45

Was muss man nehmen, um das zu verstehen? ?( 8| Sensationeller Thread ;)
Ich hätte es nicht besser sagen können !!
Hut ab vor den Jungs die dieses wirre gebrabbel richtig debugen und kompilieren können :D :thumbsup: :thumbsup: :thumbsup: :thumbsup: :thumbsup:



Religionskonflikte sind konflikte zwischen Erwachsenen,
bei denen es darum geht,wer den cooleren, imaginaeren Freund hat...


Matt

Fuck me, I'm famous

  • »Matt« ist der Autor dieses Themas

Beiträge: 214

Wohnort: Nähe Bodensee

Beruf: Informatikkaufmann

Danksagungen: 6

  • Nachricht senden

8

12.01.2010, 13:59

Was muss man nehmen, um das zu verstehen? ?( 8| Sensationeller Thread ;)
Wie sagt unser Dozent immer?

3x täglich API!


Excalibur, nein, sortieren geht da leider nicht, da es ein 2D Array ist. Ich meine, dass Arrays.sort nur 1D Arrays sortieren kann.


Ich habs jetzt hinbekommen, danke turbo. Hab noch ne dritte Methode geschrieben, die alleine fürs ausdrucken zuständig ist. ;)


Aber eine Frage hab ich noch. Aber die hats in sich:




Hier noch ein kleines Zitat aus der Aufgabenstellung (die oben angehängt ist, A5.3):


"Implementieren Sie dann einen Algorithmus, der das Feld inputMatrix[n][n]
spiralig von aussen nach innen liest, wie durch die rote punktierte Linie mit Pfeil markiert.

Die gelesenen Zahlen werden im Zick-Zack-Muster in die Ergebnismatrix outputMatrix[n][n] geschrieben, wie in Bild 5.3b durch die rote punktierte Linie mit Pfeil markiert...."

So, genau den Punkt hab ich nicht verstanden. Ich weiss nicht, wie ich das zweite Array mit den Werten des ersten befüllen soll, und sie dann aufsteigend im ZickZack anzuordnen. Wie eben im Beispiel in der Aufgabenstellung. Ich habs einfach so gemacht, wie bei der Spirale. Den neuen Quelltext habe ich angehängt. Ich hoffe, mit RTF kommt ihr klar? Ok, häng noch ne PDF an. Ich bin der Meinung, dass so die Aufgabe falsch ist, wie ich sie gelöst habe, ohne Zweifel, der richtige Ausdruck, aber nicht so gelöst, wie in der Aufgabenstellung gewollt.

Danke Euch!




turbo

Schüler

Beiträge: 142

  • Nachricht senden

9

12.01.2010, 17:42

außer bei der nullten spallte und der letzten spalte kannst du jeweils die äußere for-schleife weglassen, da sie jeweils nur exakt einmal durchlaufen werden. bsp:
for(int z=max-1; z<max; z++) nach dem durchlauf der schleife wird z von max - 1 auf max erhöht. beim zweiten durchlauf ist somit bereits die abbruchbedingung z < max erreicht und die schleife wird kein weiteres mal durchlaufen. bei den anderen schleifen (abgesehen von den beiden bereits erwähnten ausnahmen) ist es ähnlich. im abschnitt "zickzack" ist es noch "schlimmer", dort sind alle aäußeren schleifen überflüssig.

wie das lesen und schreiben erfolgen soll, muss ich auch erstmal durchdenken. auf alle fälle sollst du die zahlen aus der inputmatrix lesen und den gelesenen wert in die outpumatrix packen. du schreibst einfach nur die werte in die outputmatrix ohne sie aus der anderen matrix gelesen zu haben.
wie genau funzt, hab ich noch nicht raus. einfacher wäre es, wenn du die werte in einem anderen array zwischenspeichern dürftest.

weiterer punkt:
durch deine art der implementierung bist du auf matrizen einer bestimmten größe festgelegt. würde sich deren größe ändern, müsstest du den ganzen code ändern/neu schreiben. so sollte man nciht programmieren. der code sollte so geschrieben werden, dass er mit beliebigen quadratischen matrizen funktioniert.

Werbung

Matt

Fuck me, I'm famous

  • »Matt« ist der Autor dieses Themas

Beiträge: 214

Wohnort: Nähe Bodensee

Beruf: Informatikkaufmann

Danksagungen: 6

  • Nachricht senden

10

12.01.2010, 18:47

Das ist ja mein Problem. Ich hätte spontan als Ersti keine Lösung gefunden, wie mir das Ergebnis zwischenspeichert und dann sortiert und der reihe nach ausgibt. Vielleicht geht das mitm Bubblesort...aber selbst der sortiert nur 1D.

turbo

Schüler

Beiträge: 142

  • Nachricht senden

11

12.01.2010, 20:01

hab ich was übersehen in der aufgabenstellung? kann mich nicht erinnern, dass du sortieren solst. du sollst daten in einer bestimmten reihen folge einlesen und wieder abspeichern. wo willst du da sortieren? wenn du die daten so einliest, wie gefordert, sind die doch schon sortiert.

das zwischenspeichern ist einfach: du musst nur die daten, die du aus der matrix ausliest (das ist der schwierigere teil wegen der besch... reihenfolge) in ein normales array der größe n*n packst (der reihe nach). dieses array liest du wieder aus (auch der reihe nach) und packst die daten ins outputarray. letzteres ist auch nciht gerade trivial, aber meiner meinung nach einfacher als das auslesen. leider ist mein hirn heute etwas ausgebrannt (prüfungsvorbereitung), daher werde ich mir heute nicht mehr groß gedanken machen zu den algorithmen.

Matt

Fuck me, I'm famous

  • »Matt« ist der Autor dieses Themas

Beiträge: 214

Wohnort: Nähe Bodensee

Beruf: Informatikkaufmann

Danksagungen: 6

  • Nachricht senden

12

12.01.2010, 21:18

turbo, das passt schon. Ich hab die Aufgabe heute abgegeben. Ich dachte, es liegt an was einfachem, das ich übersehen habe. Aber es scheint doch größer zu sein. Brauchst dir keine Mühe machen.

Trotzdem danke! :D

Werbung

Lesezeichen:

Forenuser - Die Foren
Findmaschine