Diese Aufgabe ist Teil einer längeren Aufgabe aber ich habe schon Probleme bei der Programmierung der ersten Methode. Die Aufgabenstellung für die erste Methode lautet wie folgt:
Die erste Methode ist eine Eingabemethode. Die Parameterliste ist leer und gibt ein Array aus Double-Werten zurück. In dieser Methode werden mithilfe von zwei Eingabemethoden zwei double-Werte eingelesen, die die Seitenlänge eines Rechtecks darstellt. Legen Sie die Werte in einem Array ab und im Anschluss soll das Array zurückgegeben werden.
Mein Ansatz ist wie folgt:
Java:
publicclassProgramm{publicstaticdoublefeld(){String ersteEingabe = javax.swing.JOptionPane.showInputDialog("Geben Sie die erste Seitenlänge des Rechtecks ein:");String zweiteEingabe = javax.swing.JOptionPane.showInputDialog("Geben Sie die zweite Seitenlänge des Rechtecks ein:");double zahl1 =Double.parseDouble(ersteEingabe);double zahl2 =Double.parseDouble(zweiteEingabe);double[] feld2=newdouble[2];
feld2[1]= zahl1;
feld2[2]= zahl2;return feld2;}}
Meine erste Frage wäre ob das Programm im Prinzip richtig ist. Ich bin mir nämlich unsicher wie die Werte in das Array abgelegt werden sollen.
Wenn ich das Programm starte bekomm ich die Fehlermeldung in der return feld2 Zeile: error:incompatible Types.
Wie kann ich das Array denn richtig zurückgeben?
Vielen Dank im Voraus!
Die erste Methode habe ich nun hinbekommen. Allerdings macht mir die zweite Methode noch mehr Probleme.
Die Aufgabe lautet wie folgt:
Die zweite Methode bekommt ein Array aus double Werten übergeben. Das Array beeinhaltet die Seitenlängen des Rechtecks, wobei an der ersten Position die Länge der ersten Seite und an der zweiten Position die länge der zweiten Seite steht. Die Methode soll überprüfen, ob es sich bei den Werten um ein Quadrat oder um ein Rechteck handelt und gibt einen booleschen Wert zurück. Innerhalb der Methode erfolgt keine Ausgabe.
Mein Ansatz sieht wie folgt aus:
Java:
publicclassProgramm{publicstaticdoublefeld(){String ersteEingabe = javax.swing.JOptionPane.showInputDialog("Geben Sie die erste Seitenlänge des Rechtecks ein:");String zweiteEingabe = javax.swing.JOptionPane.showInputDialog("Geben Sie die zweite Seitenlänge des Rechtecks ein:");double zahl1 =Double.parseDouble(ersteEingabe);double zahl2 =Double.parseDouble(zweiteEingabe);double[] feld2=newdouble[2];
feld2[0]= zahl1;
feld2[1]= zahl2;return feld2[2];}publicstaticdoublearray(double feld2[0],double feld2[1]){if(feld2[0]== feld2[1]){returntrue;}elseif(feld2[0]!= feld1[0]){returnfalse;}}
Allerdings bekomm ich nur Fehler. Wie kann ich die zweite Methode richtig programmieren?
Hallo MWin, danke für deine Antwort.
Funktioniert das auch so wie ich das gemacht habe? Ich frage zur Sicherheit nach weil sich die Fehler reduziert haben.
Java:
publicclassProgramm{publicstaticdoublefeld(){String ersteEingabe = javax.swing.JOptionPane.showInputDialog("Geben Sie die erste Seitenlänge des Rechtecks ein:");String zweiteEingabe = javax.swing.JOptionPane.showInputDialog("Geben Sie die zweite Seitenlänge des Rechtecks ein:");double zahl1 =Double.parseDouble(ersteEingabe);double zahl2 =Double.parseDouble(zweiteEingabe);double[] feld2=newdouble[2];
feld2[0]= zahl1;
feld2[1]= zahl2;return feld2[2];}publicstaticdoublearray(double feld3[]){if(feld3[0]== feld3[1]){returntrue;}elseif(feld3[0]!= feld3[0]){returnfalse;}}
Allerdings hab ich immer noch das Problem mit dem Fehler incompatible types wegen dem Boolean. Wie kann ich diesen Fehler beheben? Danke im Voraus! Außerdem steht in der Aufgabenstellung etwas von erster und zweiter Position. Wie kann ich das da reinimplementieren?
return feld2[2];
Hier gibst du nur das zweite Element vom Array zurück.
Wenn das so gewollt ist, kannst du dir die erste Eingabe ja sparen.
public static double array(double feld3[])
Auch hier ist der Rückgabetyp double. Wenn du ein boolean zurückgeben willst, musst du statt double boolean hinschreiben.
Ich weiß nicht genau wie ich das programmieren soll. Die Aufgabe lautet wie folgt:
Die zweite Methode bekommt ein Array aus double Werten übergeben. Das Array beeinhaltet die Seitenlängen des Rechtecks, wobei an der ersten Position die Länge der ersten Seite und an der zweiten Position die länge der zweiten Seite steht. Die Methode soll überprüfen, ob es sich bei den Werten um ein Quadrat oder um ein Rechteck handelt und gibt einen booleschen Wert zurück. Innerhalb der Methode erfolgt keine Ausgabe.
Dort steht, dass ich die erste und zweite Position mit in die Methode reinimplementieren soll. Doch dann funktioniert das ja mit dem boolean nicht.
Das hab ich nun aktualisiert. Der Fehler missing return statement ist immer noch da und noch das Problem mit der ersten und zweiten Position. Kannst du mir das vllt erläutern?
publicclassProgramm{publicstaticdoublefeld(){String ersteEingabe = javax.swing.JOptionPane.showInputDialog("Geben Sie die erste Seitenlänge des Rechtecks ein:");String zweiteEingabe = javax.swing.JOptionPane.showInputDialog("Geben Sie die zweite Seitenlänge des Rechtecks ein:");double zahl1 =Double.parseDouble(ersteEingabe);double zahl2 =Double.parseDouble(zweiteEingabe);double[] feld2=newdouble[2];
feld2[0]= zahl1;
feld2[1]= zahl2;return feld2[2];}publicstaticbooleanarray(double[]rechteck){if(rechteck[0]== rechteck[1])returntrue;elseif(rechteck[0]!= rechteck[0])returnfalse;}publicstaticvoidmain(String[]args){}}
Das ist der gesamte Code bisher. Mit der ersten und zweiten Methode.funktioniert nicht. Ich versuch das mal hinzukriegen. Was muss ich statt code dort reinschreiben?
Wenn du auf das Icon "Einfügen" (links neben der Diskette) klickst, geht ein Assistent auf.
Dort "Code" und dann "Java" auswählen und den Code reinkopieren. Dann bleibt auch die Einrückung erhalten.
publicclassProgramm{publicstaticdoublefeld(){String ersteEingabe = javax.swing.JOptionPane.showInputDialog("Geben Sie die erste Seitenlänge des Rechtecks ein:");String zweiteEingabe = javax.swing.JOptionPane.showInputDialog("Geben Sie die zweite Seitenlänge des Rechtecks ein:");double zahl1 =Double.parseDouble(ersteEingabe);double zahl2 =Double.parseDouble(zweiteEingabe);double[] feld2=newdouble[2];
feld2[0]= zahl1;
feld2[1]= zahl2;return feld2[2];}publicstaticbooleanarray(double[]rechteck){if(rechteck[0]== rechteck[1])returntrue;elseif(rechteck[0]!= rechteck[0])returnfalse;}publicstaticvoidmain(String[]args){}}
Eine Frage noch nebenbei: Hab ich das in der ersten Methode richtig gemacht mit return feld[2] das gesamte Array zurückzugeben?
Hallo MWin, ich will dir an dieser Stelle erstmal für deine Geduld danken.
Wie kann ich das in der ersten Methode richtig machen das gesamte Array zurückzugeben?
Danach würde ich die weiteren Methoden selber versuchen und mich gegebenenfalls später wieder melden.
Ist das so richtig? Gib ich mit return feld2; das gesamte Array zurück?
Java:
publicclassProgramm{publicstaticdouble[]feld(){String ersteEingabe = javax.swing.JOptionPane.showInputDialog("Geben Sie die erste Seitenlänge des Rechtecks ein:");String zweiteEingabe = javax.swing.JOptionPane.showInputDialog("Geben Sie die zweite Seitenlänge des Rechtecks ein:");double zahl1 =Double.parseDouble(ersteEingabe);double zahl2 =Double.parseDouble(zweiteEingabe);double[] feld2=newdouble[2];
feld2[0]= zahl1;
feld2[1]= zahl2;return feld2;}publicstaticbooleanistQuadratisch(double[] rechteck){return rechteck[0]== rechteck[1];}publicstaticvoidmain(String[]args){}}
Klasse. Du warst mit eine große Hilfe. Ich werde mich wieder melden wenn ich mit den anderen Methoden Probleme habe. In der Aufgabe sollen 4 Methoden programmiert werden.
Ich hätte nicht gedacht, dass ich mich so schnell wieder melden würde. Aber schon wieder hab ich nur mit Fehlern zu kämpfen.
Zur dritten Methode steht in der Aufgabe:
Bei der dritten Methode handelt es sich um die Ausgabemethode. Die Methode erwartet ein Array aus double Werten, wobei die beiden Arrayelemente wieder die Seitenlängen eines Rechtecks sind. Einen Rückgabewert hat die Methode nicht. Es soll in der Konsole ausgegeben werden, ob es sich um ein Quadrat oder um ein Rechteck handelt. Ziehen Sie für diese Überprüfung die zweite Methode heran.
Ich bekomme die Fehlermeldung, "cannot find symbol"
Mein Ansatz:
Java:
publicclassAufgabeMethoden{publicstaticdouble[]feld(){String ersteEingabe = javax.swing.JOptionPane.showInputDialog("Geben Sie die erste Seitenlänge des Rechtecks ein:");String zweiteEingabe = javax.swing.JOptionPane.showInputDialog("Geben Sie die zweite Seitenlänge des Rechtecks ein:");double zahl1 =Double.parseDouble(ersteEingabe);double zahl2 =Double.parseDouble(zweiteEingabe);double[] feld2=newdouble[2];
feld2[0]= zahl1;
feld2[1]= zahl2;return feld2;}publicstaticbooleanistQuadratisch(double[] rechteck){if(rechteck[0]== rechteck[1]){returntrue;}returnfalse;}publicstaticdouble[]pruefung(double[]pruefung){if(istQuadratisch ==true){System.out.println("Es handelt sich um ein Quadrat.");}elseSystem.out.println("Es handelt sich um ein Rechteck.");}publicstaticvoidmain(String[]args){}}
Ich hab die dritte Methode jetzt verändert, nun bekomm ich aber den Fehler "missing return statement" schon wieder, obwohl dort nur eine Ausgabe stattfinden soll und keine Rückgabe.
Hier der neue Code:
Java:
publicclassAufgabeMethoden{publicstaticdouble[]feld(){String ersteEingabe = javax.swing.JOptionPane.showInputDialog("Geben Sie die erste Seitenlänge des Rechtecks ein:");String zweiteEingabe = javax.swing.JOptionPane.showInputDialog("Geben Sie die zweite Seitenlänge des Rechtecks ein:");double zahl1 =Double.parseDouble(ersteEingabe);double zahl2 =Double.parseDouble(zweiteEingabe);double[] feld2=newdouble[2];
feld2[0]= zahl1;
feld2[1]= zahl2;return feld2;}publicstaticbooleanistQuadratisch(double[] rechteck){if(rechteck[0]== rechteck[1]){returntrue;}returnfalse;}publicstaticdouble[]pruefung(double[] quadrat){double[] a =newdouble[2];if(istQuadratisch(a)==true)System.out.println("Es handelt sich um ein Quadrat.");elseSystem.out.println("Es handelt sich um ein Rechteck.");}publicstaticvoidmain(String[]args){}}
Oh man wie konnte ich das nur übersehen ... ich bekomme aber trotzdem noch Fehler Tarrew.
Wie muss ich meine Methode verändern, dass sie funktioniert?
Java:
publicstaticvoiddouble[]pruefung(double[] quadrat){double[] a =newdouble[2];if(istQuadratisch(a)==true)System.out.println("Es handelt sich um ein Quadrat.");elseSystem.out.println("Es handelt sich um ein Rechteck.");}
Du erstellst dir ein neues Array "a". Das Array wird default mit Nullen gefüllt.
Du übergibst also jedes Mal das neue Array mit den Nullen an die Methode ist quadratisch. Deswegen wird dir jedes Mal gesagt, dass es sich um ein Quadrat handelt.
Du musst ein anderes Array übergeben, was eig. ziemlich offentsichtlich ist. In welchem Array speicherst du denn die Länge und Breite? Das Array soltlest du dann auch übergeben.
Übrigens hast du den Rückgabewert in dem Beispiel immer noch nicht auf void geändert. Bzw. einen Syntaxfehler gebaut. Du kannst nur einen Rückgabetyp haben.
Als Ausgangscode nimm ich jetzt das hier:
Stimmt das erstmal soweit?
Java:
publicstaticvoidpruefung(double[] quadrat){if(istQuadratisch(a)==true)System.out.println("Es handelt sich um ein Quadrat.");elseSystem.out.println("Es handelt sich um ein Rechteck.");}
Soll ich dort nun ein neues Array definieren oder auf das andere zugreifen?
Du solltest am besten das Array übergeben in dem die Werte mit der Länge und Breite stehen. a existiert nicht mehr, also bleibt eig. nur eine Möglichkeit.
Ich zeig dir mal den gesamten Code:
In der dritten Methode hab ich nun feld2 reingeschrieben. Bekomme aber den Fehler: "cannot find symbol"
Java:
publicclassAufgabeMethoden{publicstaticdouble[]feld(){String ersteEingabe = javax.swing.JOptionPane.showInputDialog("Geben Sie die erste Seitenlänge des Rechtecks ein:");String zweiteEingabe = javax.swing.JOptionPane.showInputDialog("Geben Sie die zweite Seitenlänge des Rechtecks ein:");double zahl1 =Double.parseDouble(ersteEingabe);double zahl2 =Double.parseDouble(zweiteEingabe);double[] feld2=newdouble[2];
feld2[0]= zahl1;
feld2[1]= zahl2;return feld2;}publicstaticbooleanistQuadratisch(double[] rechteck){if(rechteck[0]== rechteck[1]){returntrue;}returnfalse;}publicstaticvoidpruefung(double[] quadrat){if(istQuadratisch(feld2)==true)System.out.println("Es handelt sich um ein Quadrat.");elseSystem.out.println("Es handelt sich um ein Rechteck.");}publicstaticvoidmain(String[]args){}}
Du speicherst deine Werte in einer Variablen "werte". Die Methode 'feld' arbeitet intern zwar mit dem Variablennamen feld2 aber das spielt überhaupt keine Rolle. Die Variable feld2 existiert nur innerhalb der Methode.
Jetzt übergibst du das Array "werte" an die Methode pruefung.
Und die Signatur der Methode sieht ja so aus:
Java:
publicstaticvoid pruefung(double[] quadrat){
Du hast als Parameter "werte" übergeben. Das Array heißt innerhalb der Methode jetzt aber nicht mehr "werte" sondern "quadrat". Und damit solltest du auch wissen, was du an die Methode istQuadratisch übergeben musst.
publicstaticvoidpruefung(double[] quadrat){if(istQuadratisch(quadrat)==true)System.out.println("Es handelt sich um ein Quadrat.");elseSystem.out.println("Es handelt sich um ein Rechteck.");}
Ich danke dir sehr für deine Hilfe Tarrew. Die Aufgabe ist gleich zu Ende und danach werde ich noch Zeit haben es richtig nachvollziehen können
Ich muss nun noch die Main-Methode machen. Dazu sagt der Aufgabensteller folgendes:
Die letzte Methode ist die main-Methode. Hier soll ein Array mithilfe der ersten Methode erzeugt werden und anschließend mit diesem Array die dritte Methode aufgerufen werden.
Das heißt ich muss erst einfach die erste Methode ansprechen mit:
Das ist zwar syntaktisch korrekt, allerdings hilft es dir nicht weiter.
In der Methode gibst du zwar ein Array mit den beiden Werten zurück, allerdings speicherst du es nirgendwo in der main-Methode. Somit hast du auch nichts, was du der pruefe-Methode übergeben kannst.
Wenn du die Methode feld() aufrufst, musst du 2 Werte eingeben. Deine feld-Methode speichert die Werte in einem Array und gibt das Array zurück. Diese Rückgabe speicherst du aber nirgendwo ab.
Wenn du eine Methode hast die Zufallszahlen zurückgibt wie zB:
Darf ich fragen, was Du mit dieser Prüfung bezwecken willst ??
Wenn der Inhalt von rechteck[0] ungleich dem Inhalt von rechteck[0] wäre, wäre das aber schon seeeehr seltsam