Was ist an diesem Java Code falsch? Er soll die Quadratzahl von X ausgeben?

Code - (Computer, PC, Studium)

2 Antworten

public static int quadrat(int x) {
return(x * x);
}

Das wäre eine Funktion, die das Quadrat einer Zahl berechnet. Was deine Funktion macht, ist im Prinzip die Variable r (die keinen Wert hat), mehrmals mit q = 0 zu addieren. Deine Schleife macht also gar nichts. Anschließend wird q (was immer 0 ist) zurückgegeben. Und die Ausgabe hinter dem Return wird eh nie erreicht.

Zum einen solltest du dir ein Buch oder ein Tutorial suchen und damit systematisch programmieren lernen, anstatt einfach irgendwas drauflos zu coden, was vielleicht aus irgendwelchen Gründen, die du nicht verstehst, funktioniert oder auch nicht.

Zum anderen: nimm nicht Kate zum programmieren, sondern eine richtige Entwicklungsumgebung. Für Java wären das klassischerweise Eclipse oder Netbeans.

Ich kann NICHTS erkennen.

Hier Bild hochladen:

http://www.directupload.net/


TeeTier  17.11.2015, 12:13

hahaha ... Der Fragensteller ist schon nicht schlecht. :)

Ich erkenne ebenfalls den Quelltext nicht. Weder hier, noch auf dem verlinkten Screenshot.

Daher hier mal meine Lösung mit Schleife, die auch funktioniert:

int result = x;

for (int i = 0; i < 1; ++i) {
result *= x;
}

return result;

Allerdings wird da ein guter Compiler sowieso "x*x" draus machen. :)

Mir fällt partout keine Situation ein, in der man zum Quadrieren sinnvoll eine Schleife einsetzen sollte. (Außer vielleicht intern bei BigInteger- oder BigFloat-Klassen, mit beliebiger Genauigkeit.)

0
ceevee  17.11.2015, 13:27
@TeeTier

Beim verlinkten Quellcode kannst du unten auf "Dieses Bild downloaden klicken", danach ist es größer.

Man könnte das ungefähr so mit Schleife lösen

public static int quadrat(int x) {

int result = 0;

for (int i=0; i<x; i++) {

result+=x;

}

return result;

}

aber dabei würde man quasi die Multiplikationen durch Additionen nachbilden. Auch als Programmieranfänger sollte man merken, dass man irgendwas ganz gehörig falsch macht, wenn man zu solchen Mitteln greifen muss.

0
Omnivore08  17.11.2015, 14:59
@TeeTier
for (int i = 0; i < 1; ++i) {
result *= x;
}

zu geil ^^

Außer vielleicht intern bei BigInteger- oder BigFloat-Klassen, mit beliebiger Genauigkeit.

Joar...so ähnlich wird das ja auch gemacht. Ähnlich wie beim long damals bei x86. Man nimmt halt den Übertrag mit in die nächste Rechnung.

0