Methode soll Quadrat aus der Summer zurückgeben

überlebender

Aktives Mitglied
Hi, ich möchte die folgenden Methode schreiben:
  • Modifikatoren: public und static
  • Rückgabetyp: int
  • Methodenname: squared
  • Übergabeparameter: int
Die Methode squared gibt das Quadrat aus der Summe aus dem übergegebenen Wert und 1 zurück.


Mein Versuch:

Java:
package a1;

public class A1_main {

    public static void main(String [] args) {}
   
        public static int squared (int x) {
       
           
        int i= x * x +1;
       
}
 return x; // Fehlermeldung : Syntax error on token "return", byte expected
 
}


WIESO BYTE???? ich weiß nicht mehr weiter im Leben
 
In deiner main(..) Methode gibt es eine weitere Methode. Das ist unzulässig.

Schreibe diese außerhalb der Main Methode aber innerhalb der Klasse.
 
In deiner main(..) Methode gibt es eine weitere Methode. Das ist unzulässig.

Schreibe diese außerhalb der Main Methode aber innerhalb der Klasse.
Ok....

Java:
package a1;

public class A1_main {

   
    public static int squared (int x) {   // This method must return a result of type int
   
        int m = 0;
        m =(x * x +1);
        x =m;
       
    }  
 
public static void main (String [] args) {
   
   return squared (2);
}}

Jetzt habe ich eine andere Fehlermeldung in Zeile 6
 
Zuletzt bearbeitet:
Wenn der Result-Type der method int ist, dann benötigst du eine return-Anweisung in der Methode. Wenn der Result-Type void ist, dann nicht bzw. ohne Variable/Typ.
 
Wenn der Result-Type der method int ist, dann benötigst du eine return-Anweisung in der Methode. Wenn der Result-Type void ist, dann nicht bzw. ohne Variable/Typ.
Java:
package a1;

public class A1_main {

    
    public static int squared (int x) {
    return ((x +1) *(x +1) );       
    }   

 
public static void main(String [] args) {
    System.out.println((squared (-3)));
    
}}
 
int hat einen bestimmten Wertebereich, s. https://www.tutorialspoint.com/integer-max-value-and-integer-min-value-in-java-with-examples
Jetzt sollte man also evtl. darüber nachdenken, dass bei einer Multiplikation zweier int-Werte dieser Bereich über- bzw. unterschritten werden kann. Das Ergebnis wäre dann vermutlich unerwartet.
Java:
package a1;

public class A1_main {

    
    public static int squared (int x) {
    return ((x +1) *(x +1) );       
    }   

 
public static void main(String [] args) {
    System.out.println((squared (8)));
    
}}

Wenn ich 8 einsetze kommt 91 raus, so wie in der Aufgabenstellung also hat funktioniert
 
Bei dir stimmt in der ersten Linie die Klammerung nicht sowie dementsprechend auch die Einrückungen nicht.

Schließlich willst du das return doch IN der methode haben, oder?

Für guten Stil solltest du bei der Main methode, auch wenn da nichts drin steht, nicht die Klammern und Alles in eine Zeile packen.
Sondern bspw. immer konsequent so

Java:
public void hub(){
    if(5>3){
        System.out.println("hallo");
    }
}
schreiben (also bezüglich Einrückungen, klammern und so.
gehen auch andere Stile, aber halt dann konsequent immer das, dann entsteht keine so verwirrung wie bei deinem beispiel
 
Bei dir stimmt in der ersten Linie die Klammerung nicht sowie dementsprechend auch die Einrückungen nicht.

Schließlich willst du das return doch IN der methode haben, oder?

Für guten Stil solltest du bei der Main methode, auch wenn da nichts drin steht, nicht die Klammern und Alles in eine Zeile packen.
Sondern bspw. immer konsequent so

Java:
public void hub(){
    if(5>3){
        System.out.println("hallo");
    }
}
schreiben (also bezüglich Einrückungen, klammern und so.
gehen auch andere Stile, aber halt dann konsequent immer das, dann entsteht keine so verwirrung wie bei deinem beispiel
Ich muss das Programm an meinen Prof schicken, der mein Code dann mit einem automatisierten Testprogramm testet. Im Code dürfen keine print-Befehle stehen

Die Print Anweisung in meinem Code will ich ja später bei der Abgabe nicht mehr drin haben. Steht jetzt nur zu Demonstrationszwecken dort.
 
Bei dir stimmt in der ersten Linie die Klammerung nicht sowie dementsprechend auch die Einrückungen nicht.

Schließlich willst du das return doch IN der methode haben, oder?

Für guten Stil solltest du bei der Main methode, auch wenn da nichts drin steht, nicht die Klammern und Alles in eine Zeile packen.
Sondern bspw. immer konsequent so

Java:
public void hub(){
    if(5>3){
        System.out.println("hallo");
    }
}
schreiben (also bezüglich Einrückungen, klammern und so.
gehen auch andere Stile, aber halt dann konsequent immer das, dann entsteht keine so verwirrung wie bei deinem beispiel
Die Kritik finde ich unberechtigt. Gerade der gezeigte Code ist sehr schlecht als Beispiel für gute Formatierung geeignet. Vor { kommt ein Leerzeichen. IF ist keine Funktion also kommt nach if ein Leerzeichen usw...
Später verwendet man sowieso eine IDE, dann wird der Code automatisch formatiert. So lernt man dann auch wie es aussehen soll. Allerdings gibt es da mehrere Vorgaben. Die von Sun und Google sollten wohl die bekanntesten und meist verwendeten sein.
 
Wenn ich 8 einsetze kommt 91 raus, so wie in der Aufgabenstellung also hat funktioniert
Ja, @Oneixee5 meinte etwas anderes. Wenn Du zwei Zahlen mit zwei Stellen multiplizierst, reichen zwei Stellen für das Ergebnis nicht mehr aus. Das gleiche Problem hast Du natürlich auch hier: ein int ist eine 32-Bit Ganzzahl. Wenn Du zwei 32-Bit-Ganzzahlen miteinander multiplizierst, passt das Ergebnis ggf. nicht mehr in 32-Bit.

Und hier stellt sich dann immer die Frage, wie man damit umgehen möchte. Standardmäßig werden einfach die unteren 32-Bit übernommen, der Überlauf wird ignoriert, was z. T. für Verwirrung sorgt:
Java:
int a = 500_000;
int b = a*a;
System.out.println(b);
Rein rechnersich würdest Du ja 250.000.000.000 erwarten. Ausgegeben wird jedoch 891.896.832.
 

Neue Themen


Zurück
Oben