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

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

Algorithmus mit Schleife für Array von int-Werten?

Hey,

ich bin Anfänger in Sachen Java und hatte heute eine Aufgabe die mich etwas überfordert hat.

Es ging ungefähr darum, dass ich eine Methode compute schreiben sollte, die wenn ein Array vom Typ int größer als 4 ist, die ungeraden Indizes addiert und im ersten Index des Arrays speichert. Falls aber mein Array kleiner gleich 4 ist soll es mir nur den Array anzeigen.

Ich habe einen Ansatz der mir leider falsche Werte ausgibt und würde gerne wissen wo meine Fehler liegen und was ich verbessern oder noch weiter üben kann.

public class Übung
{
    public static int[] compute( int[] arr)
    {
        int sum = 0;
        
        for( int i = 0; i< arr.length ; i++)
        {
            if(arr[i]>4)
            {
                if(arr[i] % 2 != 0)
                {
                   sum = arr[i] + sum;
                   arr[0] = sum;
                }
            }
            
            if (arr.length<=4)
            {
                return arr;
            }
        }
        return arr;
    }
}

...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?