Hallo,
ich möchte gerne ein Programm schreiben, das alle durch 17 teilbaren Zahlen im Bereich zwischen 100 und 999 addiert. Dazu möchte ich nur Addition und Substraktion verwenden.
Aber ich komme nicht weiter.
Ich bin noch ein Anfänger in der Programmierung und Java, also bitte ich um Verständnis, falls der Code völliger Mist ist.
Hier ist mein Anfang:
Java:
classSum17{publicstaticvoidmain(String[] args){int a;int max =999;int min =102;int result = min;String result ="";String min ="";while(min < max){//damit ich alle Zahlen, die durch 17 teilbar sind, erhalte
min = min +17;
result = result + min;}System.out.println(min + result);}}
Also es gibt jetzt für mich 3 Probleme:
1. Hast du schon mal versucht, das Programm zu kompilieren und zu testen?
2. Den Code kann man so zwar lesen, allerdings kann man ihn deutlich besser formatieren und darstellen lassen.
3. Was genau erwartest du an dieser Stelle von uns? Deine Fragestellung ist mir nicht wirklich klar.
Der Code ist noch unfertig.
Ich möchte gerne wissen, wie ich den Code so umschreibe, damit der Bereich von 100 bis 999 eingehalten wird.
Nach der Ausführung des Programm kommen Zahlen von 221 bis 29835 raus.
Okay, dann fangen wir mal mit "offensichtlichen" Dingen an.
int a scheinst du nicht zu benutzen, solltest du also aus deinem Code entfernen. Gleiches gilt für die Strings min und result, welchen Zweck sollen die erfüllen?
Was heißt, es kommen Zahlen von 221 bis 29835 raus? Ich sehe nur ein Programm mit genau einer Ausgabe, also was wird dir vom Programm errechnet?
classSum17{publicstaticvoidmain(String[] args){int max =999;int min =102;int result = min;while(min < max){//damit ich alle Zahlen, die durch 17 teilbar sind, erhalte
min = min +17;
result = result + min;System.out.println(min);// nach jeder Addition wird die Zahl ausgegeben}System.out.println("=" result);//Ergebnis, wenn man alle Zahlen zusammen zählt}}
Bis jetzt funktioniet das Programm, aber meine höchste Zahl, die durch 17 teilbar ist, ist 1003 und die liegt aber über 999. Woran liegt das?
Überleg dir genau, was in dem Schritt vor den 1003 passiert. 986 ist die letzte Zahl, die du eigentlich haben willst, diese ist natürlich auch kleiner als dein max (999). Was passiert also bei deiner while-Schleife?
Mit freundlichen Grüßen
Xelsarion
EDIT: Naja, da hat dir jemand die Denkarbeit erspart. @Zitrus: Der Tipp mit dem Modulo-Operator ist vermutlich zwar nett gemeint und in manchen Fällen vielleicht hilfreich, hier hilft der Operator allerdings auch nicht.
Das bezweifelt ja keiner Allerdings hilft es dem TE vermutlich nicht wirklich weiter, da es sich bei dir um eine völlig andere Herangehensweise handelt und der TE nach eigener Aussage Anfänger ist und sich deshalb wohl erstmal mit den Grundlagen vertraut machen will.
Zudem ist diese Methode ineffezienter, als die Methode des TE, auch wenn das hier vermutlich keine große Rolle spielt.
klar modulo funktioniert, aber du machst eine schleife die über ALLE zahlen im bereich 100 bis 1000 läuft und dort prüfst du halt immer mit modulo. Es ist in diesem Fall effizienter, wenn man immer nur 17 addiert. Da man somit keine 900 Zahlen prüft ob sie teilbar sind, sondern eben nur direkt die 52 Zahlen in dem Bereich verwendet, welche definitiv durch 17 teilbar sind.
Außerdem wollte TE halt nur mit Addition das ganze lösen^^
@Xelsarion Okay, tut mir Leid! Da muss ich dir Recht geben! Bitte um Entschuldigung :S @Xelsarion@InfectedBytes Das passiert, wenn Anfänger, Anfängern helfen wollen