Java: Return und For-Schleife?

1 Antwort

Der Return ist ganz richtig platziert.

Das Problem ist eher, dass du sum am Beginn der Schleife 0 setzt. Das heißt, dass beim erneuten Aufruf der Schleife, die Summe zuerst 0 ist, und dann (wenn die if true zurück liefert – was sie in deinem Fall bei der letzten Division nicht tut – erneut aufsummiert.

Du müsstes sum sowieso vor der Schleife mit dem Variablen-Typ initialisiert haben. Wenn du dort int sum = 0; schreibst reicht das aus.

Danke, hat mir wirklich sehr geholfen :D Könnte ich vielleicht noch um einen Gefallen bitten?

1.)

private static long simpler(short n) {
int sum = 0;
int n2 = (int) n;
int j = n2 % 10;
int basis = 10;
int potenz = 1;
while (n2 > 0) {
j = n2 % 10;
while (j > 0) {
potenz = potenz * basis;
j = j - 1;
}
sum = sum + potenz;
n2 = n2 / 10;
}
long sum2 = (long) sum;
return sum2;

Hier habe ich eine Methode geschrieben, die jeder Ziffer einer Zahl (n) eine Zehnerpotenz zuweist (sprich: 0 => 0, 1 => 10, 2 = > 100 etc.) und diese dann aufadiert. Leider versuche ich schon seit längerer Zeit den Fehler zu finden und komme einfach nicht drauf -_- Irgendwas ist da schiefgelaufen :/

0
@PlayerPro

Sorry für die Frage, aber du studierst nicht zufällig Informatik an der TU Wien? x)

1. Der Cast für n2 ist nicht notwendig.

2. Dein Problem ist, dass du die potenz nach dem Aufsummieren nicht zurücksetzt, sodass dir die zweite Schleife im Prinzip den Wert immer weiter aufmultipliziert und du sehr seltsame Werte bekommst. Vor allem bei größeren Zahlen.

Dein Code ist generell sehr umständlich. Gewisse Multiplikationen, wie die mit der basis, kann man auch direkt schreiben.

1
@karinili

Vielen Dank für deine Hilfe! :)

Und ja, ich bin an der TU, haha ^^

0
@PlayerPro

Hahaha, das find ich jetzt witzig. Dann sitzen wir wahrscheinlich im gleichen Hörsaal. Ich durfte die Beispiele nämlich genauso lösen x) (deshalb wusste ich auch die Fehler so schnell^^°).

0

For schleife in for schleife?

Hey leute. In einem projekt habe ich eine for schleife gemacht welche solange läuft solange die variable kleiner ist als 10 (i <10). In dieser Schleife ist eine weitere for schleife welche auch solange läuft solange die variable a kleiner ist als 10 (a <10). Das problem ist nur das die 2te schleife nur 9 mal durchläuft da die nur solange läuft solange die variable i kleiner ist als 10. Jedoch ist es wichtig das die 2te scheife 10 mal durchläuft.

Weiß jemand wie man das vielleicht lösen kann?

...zur Frage

Java Array code erklärung?

Given a non-empty array, return true if there is a place to split the array so that the sum of the numbers on one side is equal to the sum of the numbers on the other side.

Das ist die Angabe zu dem unten gezeigten Code. Kann mir jemand den Code näher erklären, ich verstehe die dritte schleife einfach nicht. Meines Erachtens nach rechnet er im ersten Durchgang der zweiten schleife rechnet er ja nur die erste stelle des Arrays und in der dritten schleife alle anderen die in der ersten nicht gerechnet wurden. Wahrscheinlich erklär ich das eh viel zu kompliziert aber kann mir jemand genau erklären warum und wieso? Ich muss zugeben ich bin ein Anfänger was programmieren betrifft. Danke im Voraus.

public boolean canBalance(int[] nums) {

for (int i = 0; i < nums.length; i++) {

int sum = 0;

for (int j = 0; j < i; j++) sum += nums[j];

for (int j = i; j < nums.length; j++) sum -= nums[j];

if (sum == 0) return true;

}

return false;

}

...zur Frage

While- in For-Schleife umschreiben - JAVA

Hi, ich habe in einer Aufgabe ein Codefragment vorgegeben, dass ich in eine For-Schleife umschreiben soll. Bin Anfänger und wollte deshalb hier mal fragen, ob sich jemand mit JAVA auskennt und meine Lösung anschauen und ggf. korrigieren könnte... Wäre echt nett!

Hier die Vorgabe:

ArrayList<Rucksack> studentenRucksaecke = new ArrayList<Rucksack>();
        ...
        int pos = studentenRucksaecke.size();
        while (pos>=1) {
        pos--;
        studentenRucksaecke.get(pos).gewichtPruefen();
        }
 

(Leider werden "<>" in der Code-Formatierung als "&lt ;" dargestellt... Sorry.)

Meine Umschreibung in eine For-Schleife:

ArrayList<Rucksack> studentenRucksaecke = new ArrayList<Rucksack>();
...
for(int pos = studentenRucksaecke.size(); pos>=1; pos--){
    studentenRucksaecke.get(pos).gewichtPruefen();
}   
...zur Frage

Java tt.mm.jjjj einlesen und nur das Jahr als return wert?

In Java soll das Datum in der Form: tt.mm.jjjj eigelesen werden aber nur das Jahr soll als return Wert zurückgegeben werden. Wie mach ich das am besten?

Kann man das gleich beim einlesen in

int tag, int monat, int jahr trennen oder muss ich es als string einlesen lassen und den dann umformulieren? wenn ja wie mach ich das am besten?

...zur Frage

Weiß jemand was dieser Code übersetzt bedeutet: for (int i=0; i< val.length; i++)?

Das es um eine Schleife und einen Array geht, weiß ich, ich tu mir nur mit dem Übersetzen schwer. Wenn mir jemand bei diesem Ausdruck helfen könnte, würde mir das schon sehr viel weiterhelfen.

int[] val ={0,1,2,3}; 

int sum=0; 

for (int i=0; i< val.length; i++)

sum += val[i];

S.o.p:

...zur Frage

Binärer Suchbaum in Array (Java)?

Hi, ich studiere im ersten Semester medizinische Informatik und wir sollen einen binären Suchbaum in einem sortierten Array zurückgeben. Kann mir da jemand helfen (wir programmieren in Java)? Das habe ich bis jetzt:

int[] sort() {
    zahlenElemente = new int[this.size()];
    return sort(this, zahlenElemente);
}

int[] sort(IntSearchTree suchbaum, int[]array) { if (suchbaum != null) { if (suchbaum.getLeft() != null){ sort(suchbaum.getLeft(), zahlenElemente); zahlenElemente[index] = suchbaum.getValue(); index++; } if (suchbaum.getRight() != null){ sort(suchbaum.getRight(), zahlenElemente); } for (int i = 0; i < this.size(); i++){ System.out.print(zahlenElemente[i] + " "); } } return zahlenElemente; }

Aus irgendeinem Grund werden nur Nullen ausgegeben und ich verstehe nicht warum...

...zur Frage

Was möchtest Du wissen?