myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

[Java] Fehler beim kompilieren

Willkommen

myGully

Links

Forum

 
Antwort
Themen-Optionen Ansicht
Ungelesen 21.11.10, 21:20   #1
Fighter3
Ist öfter hier
 
Registriert seit: Oct 2008
Beiträge: 194
Bedankt: 9
Fighter3 ist noch neu hier! | 0 Respekt Punkte
Standard [Java] Fehler beim kompilieren

Hey, wenn ich den folgenden Code:

Zitat:
public class drehung2 {
public static int z = 5;
public static void belegung (int [][] matrix){
int wert=1;
for (int i = 0; i < matrix.length; i++){
for (int j = 0; j < matrix.length; j++){
matrix [i][j] = wert;
wert++;
}
}
}
public static void ausgabe (int [][] matrix){
for(int i=0;i<matrix.length;i++){
for(int j=0;j<matrix.length;j++)
System.out.print(matrix[i][j]+"\t");
System.out.println();
}
System.out.println();
}
public static void drehung (int [][] quadrat2, int [][] quadrat1){
int speicher;
int a;
int d;
for (d=z; z>=0; z--){
for (a=0; a>=z; a++){
speicher = quadrat1 [d][d];
quadrat2 [0][a] = quadrat1 [d][0];
quadrat2 [a][d] = quadrat1 [0][a];
quadrat2 [d][d] = quadrat1 [a][d];
quadrat2 [d][0] = speicher;
}
}

}
public static void main (String[]args){
int [][] quadrat1 = new int [z][z];
int [][] quadrat2 = new int [z][z];

belegung (quadrat1);
ausgabe (quadrat1);
drehung (quadrat2);
ausgabe (quadrat2);
}
}

immer wieder den Fehler:

Zitat:
Compiliere C:\Users\xxx\Desktop\drehung2.java mit Java-Compiler
drehung2.java:41:9: drehung(int[][],int[][]) in drehung2 cannot be applied to (int[][])
drehung (quadrat2);
Jemand 'ne Idee wie ich den beheben kann?

Wäre sehr nett!
Vielen Dank
__________________
Hier könnte ihre Werbung stehen!
Fighter3 ist offline   Mit Zitat antworten
Ungelesen 21.11.10, 22:05   #2
PornoPenner
Banned
 
Registriert seit: Aug 2010
Beiträge: 209
Bedankt: 70
PornoPenner ist noch neu hier! | 0 Respekt Punkte
Standard

Ist schon von Vorteil, wenn Du englisch kannst.

Ich übersetze es mal auf deutsch:

Die Methode mit zwei Argumenten "drehung(int[][],int[][])" der Klasse "drehung2" kann nicht mit nur einem Argument aufgerufen werden wie in "drehung (quadrat2);"
PornoPenner ist offline   Mit Zitat antworten
Ungelesen 21.11.10, 22:31   #3
Fighter3
Ist öfter hier
 
Registriert seit: Oct 2008
Beiträge: 194
Bedankt: 9
Fighter3 ist noch neu hier! | 0 Respekt Punkte
Standard

Danke erstmal für die Antwort!

Englisch kann ich übrigens, wenn auch nicht gerade perfekt Was der Fehler bedeutet ist mir im übrigen auch klar, deshalb fragte ich auch danach wie ich diesen lösen könnte.
__________________
Hier könnte ihre Werbung stehen!
Fighter3 ist offline   Mit Zitat antworten
Ungelesen 21.11.10, 23:24   #4
Jester2
Newbie
 
Registriert seit: Aug 2010
Beiträge: 85
Bedankt: 30
Jester2 putzt sich die Zähne mit Knoblauch. | 2683 Respekt PunkteJester2 putzt sich die Zähne mit Knoblauch. | 2683 Respekt PunkteJester2 putzt sich die Zähne mit Knoblauch. | 2683 Respekt PunkteJester2 putzt sich die Zähne mit Knoblauch. | 2683 Respekt PunkteJester2 putzt sich die Zähne mit Knoblauch. | 2683 Respekt PunkteJester2 putzt sich die Zähne mit Knoblauch. | 2683 Respekt PunkteJester2 putzt sich die Zähne mit Knoblauch. | 2683 Respekt PunkteJester2 putzt sich die Zähne mit Knoblauch. | 2683 Respekt PunkteJester2 putzt sich die Zähne mit Knoblauch. | 2683 Respekt PunkteJester2 putzt sich die Zähne mit Knoblauch. | 2683 Respekt PunkteJester2 putzt sich die Zähne mit Knoblauch. | 2683 Respekt Punkte
Standard

Servus Fighter,

aufgrund deiner Antwort auf den Post über dir nehme ich mal, dass die Antwort wenig hilfreich war. Was übrigens einer der Gründe ist, warum ich die Beiträge des Kandidaten ausgeblendet habe (Gott sei Dank!).

Nun aber zu deinem Problem. In deiner Methode drehung hast du definiert, dass 2 Parameter übergeben werden müssen. Beim Aufruf in main hast du jedoch nur einen Parameter übergeben.

Code:
drehung(quadrat2);
Du musst das so korrigieren, dass du den 2. auch noch übergibst. Ich vermute du wolltest das 1. Quadrat auch noch übergeben. Du musst also den Code nur so anpassen:

Code:
drehung(quadrat2, quadrat1);
Gruß
Jester
Jester2 ist offline   Mit Zitat antworten
Ungelesen 22.11.10, 00:00   #5
PornoPenner
Banned
 
Registriert seit: Aug 2010
Beiträge: 209
Bedankt: 70
PornoPenner ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von Jester2 Beitrag anzeigen
Servus Fighter,

aufgrund deiner Antwort auf den Post über dir nehme ich mal, dass die Antwort wenig hilfreich war. Was übrigens einer der Gründe ist, warum ich die Beiträge des Kandidaten ausgeblendet habe (Gott sei Dank!).

Nun aber zu deinem Problem. In deiner Methode drehung hast du definiert, dass 2 Parameter übergeben werden müssen. Beim Aufruf in main hast du jedoch nur einen Parameter übergeben.

Code:
drehung(quadrat2);
Du musst das so korrigieren, dass du den 2. auch noch übergibst. Ich vermute du wolltest das 1. Quadrat auch noch übergeben. Du musst also den Code nur so anpassen:

Code:
drehung(quadrat2, quadrat1);
Gruß
Jester
Genau das habe ich in einem Satz auch erklärt...
PornoPenner ist offline   Mit Zitat antworten
Ungelesen 22.11.10, 03:07   #6
Banghard
Newbie
 
Registriert seit: Jun 2009
Beiträge: 74
Bedankt: 26
Banghard ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von PornoPenner Beitrag anzeigen
Genau das habe ich in einem Satz auch erklärt...
Genau genommen hast du einfach nur übersetzt und nichts zusätzlich erklärt. Aber nix für ungut
Banghard ist offline   Mit Zitat antworten
Ungelesen 22.11.10, 11:10   #7
PornoPenner
Banned
 
Registriert seit: Aug 2010
Beiträge: 209
Bedankt: 70
PornoPenner ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von Banghard Beitrag anzeigen
Genau genommen hast du einfach nur übersetzt und nichts zusätzlich erklärt. Aber nix für ungut
Ich ging auch davon aus, dass das Mindestmaß an kognitiven Fähigkeiten bei der entsprechenden Person vorhanden sind. Na ja, dann habe ich mich da wohl verschätzt.
PornoPenner ist offline   Mit Zitat antworten
Ungelesen 22.11.10, 21:16   #8
Fighter3
Ist öfter hier
 
Registriert seit: Oct 2008
Beiträge: 194
Bedankt: 9
Fighter3 ist noch neu hier! | 0 Respekt Punkte
Standard

Danke für die Hilfe! Genau das war der Fehler!

Ich musste nun noch etwas an dem Code verändern und bekomme jetzt noch einen anderen Fehler. Das Programm lässt sich zwar kompilieren, anstatt der richtigen Ausgabe kommt der Fehler:
java.lang.ArrayOutOfBoundsExeption

Zitat:
public class drehung2 {
final static int z = 4; //Größe der Matrix bestimmen
public static void belegung (int [][] matrix){
int wert=1;
for (int i = 0; i < matrix.length; i++){ //Belegung der ersten Matrix
for (int j = 0; j < matrix.length; j++){
matrix [i][j] = wert;
wert++;
}
}
}
public static void ausgabe (int [][] matrix){ //Ausgabemethode
for(int i=0;i<matrix.length;i++){
for(int j=0;j<matrix.length;j++)
System.out.print(matrix[i][j]+"\t");
System.out.println();
}
System.out.println();
}
public static void drehung (int [][] quadrat2){ //Drehmethode um 90°
int speicher;
int a;
int d = 4;
int wert=1;
for (int i = 0; i < quadrat2.length; i++){ //Belegung der ersten Matrix
for (int j = 0; j < quadrat2.length; j++){
quadrat2 [i][j] = wert;
wert++;
}
}
for (a=0; a<=d; a++){ //Variable die nie größer als die Länge der Matrix ist
speicher = quadrat2 [0][d-a]; //Wert in den Speicher übergeben
quadrat2 [0][d-a] = quadrat2 [0][0]; //Übergabe von Werten
quadrat2 [0][0] = quadrat2 [d][a];
quadrat2 [d][a] = quadrat2 [d-a][d];
quadrat2 [d-a][d] = speicher; //Wert aus dem Speicher auslesen
}


}
public static void main (String[]args){
int [][] quadrat1 = new int [z][z]; //Initialisierung von erster Matrix (normale Belegung)
int [][] quadrat2 = new int [z][z]; //Initialisierung von zweiter Matrix (gedreht)

belegung (quadrat1);
ausgabe (quadrat1);
drehung (quadrat2);
ausgabe (quadrat2);
}
}
Jemand noch 'ne Idee?
__________________
Hier könnte ihre Werbung stehen!
Fighter3 ist offline   Mit Zitat antworten
Ungelesen 22.11.10, 21:51   #9
Xalir
Erfahrener Newbie
 
Registriert seit: Mar 2009
Beiträge: 154
Bedankt: 56
Xalir ist noch neu hier! | 0 Respekt Punkte
Standard

Ich würd mal spontan tippen, Dein Array ist außerhalb der Grenzen. Den Fehler, den Du machst ist ganz einfach: Arrays beginnen mit index(0) und nicht index(1).
Xalir ist offline   Mit Zitat antworten
Ungelesen 22.11.10, 22:56   #10
Jester2
Newbie
 
Registriert seit: Aug 2010
Beiträge: 85
Bedankt: 30
Jester2 putzt sich die Zähne mit Knoblauch. | 2683 Respekt PunkteJester2 putzt sich die Zähne mit Knoblauch. | 2683 Respekt PunkteJester2 putzt sich die Zähne mit Knoblauch. | 2683 Respekt PunkteJester2 putzt sich die Zähne mit Knoblauch. | 2683 Respekt PunkteJester2 putzt sich die Zähne mit Knoblauch. | 2683 Respekt PunkteJester2 putzt sich die Zähne mit Knoblauch. | 2683 Respekt PunkteJester2 putzt sich die Zähne mit Knoblauch. | 2683 Respekt PunkteJester2 putzt sich die Zähne mit Knoblauch. | 2683 Respekt PunkteJester2 putzt sich die Zähne mit Knoblauch. | 2683 Respekt PunkteJester2 putzt sich die Zähne mit Knoblauch. | 2683 Respekt PunkteJester2 putzt sich die Zähne mit Knoblauch. | 2683 Respekt Punkte
Standard

Zitat:
Zitat von Xalir Beitrag anzeigen
Ich würd mal spontan tippen, Dein Array ist außerhalb der Grenzen. Den Fehler, den Du machst ist ganz einfach: Arrays beginnen mit index(0) und nicht index(1).
So sieht es aus. Du initialisiertst dein Array mit [4][4]. Ein Zugriff auf das erste Element im Array beginnt immer mit [0] und endet in deinem Fall mit [3] -> also 4 Elemente. Deine Variable d wird allerdings mit 4 initialisiert. Wenn du nun
Code:
speicher = quadrat2[0][d - a];
aufrufst, wird für den ersten Scheifendurchlauf folgendes gemacht:
a=0
d=4
somit 4-0=4 also:
Code:
speicher = quadrat2[0][4];
Da dein Array aber nur 4 Elemente hat und versuchst auf das 5. zuzugreifen, geht das natürlich in die Hose.
Am besten initialisierst du d so:
Code:
int d = z-1;
Solltest du auf die Idee kommen die Göße der Matrix (z) zu ändern, hat das dann keine Auswirkung auf deine Schleife.

Gruß
Jester
Jester2 ist offline   Mit Zitat antworten
Ungelesen 23.11.10, 17:01   #11
Fighter3
Ist öfter hier
 
Registriert seit: Oct 2008
Beiträge: 194
Bedankt: 9
Fighter3 ist noch neu hier! | 0 Respekt Punkte
Standard

Okay, das habe ich verstanden. Problem ist nur, dass die Matrix in ihrer Größe veränderbar sein muss.

Wie könnte ich den Code denn dann anpassen, dass der generell stimmt. (also z.B. auch für 10 Spalten und 10 Zeilen)?
__________________
Hier könnte ihre Werbung stehen!
Fighter3 ist offline   Mit Zitat antworten
Ungelesen 23.11.10, 22:25   #12
Jester2
Newbie
 
Registriert seit: Aug 2010
Beiträge: 85
Bedankt: 30
Jester2 putzt sich die Zähne mit Knoblauch. | 2683 Respekt PunkteJester2 putzt sich die Zähne mit Knoblauch. | 2683 Respekt PunkteJester2 putzt sich die Zähne mit Knoblauch. | 2683 Respekt PunkteJester2 putzt sich die Zähne mit Knoblauch. | 2683 Respekt PunkteJester2 putzt sich die Zähne mit Knoblauch. | 2683 Respekt PunkteJester2 putzt sich die Zähne mit Knoblauch. | 2683 Respekt PunkteJester2 putzt sich die Zähne mit Knoblauch. | 2683 Respekt PunkteJester2 putzt sich die Zähne mit Knoblauch. | 2683 Respekt PunkteJester2 putzt sich die Zähne mit Knoblauch. | 2683 Respekt PunkteJester2 putzt sich die Zähne mit Knoblauch. | 2683 Respekt PunkteJester2 putzt sich die Zähne mit Knoblauch. | 2683 Respekt Punkte
Standard

Zitat:
Zitat von Fighter3 Beitrag anzeigen
Okay, das habe ich verstanden. Problem ist nur, dass die Matrix in ihrer Größe veränderbar sein muss.

Wie könnte ich den Code denn dann anpassen, dass der generell stimmt. (also z.B. auch für 10 Spalten und 10 Zeilen)?
Habe ich dir doch schon geschrieben:
Code:
int d = z-1;
anstatt
Code:
int d = 4;
Gruß
Jester
Jester2 ist offline   Mit Zitat antworten
Antwort


Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:47 Uhr.


Sitemap

().