Ich brauche Hilfe |
12.10.2016, 21:09 | Auf diesen Beitrag antworten » | |||||
Elya | Ich brauche Hilfe Meine Frage: Erweitern Sie die main-Methode um folgende Funktionalität: - Schreiben Sie eine while-Schleife, die alle Zahlen zwischen "start" (inklusive) und "ende" (inklusive) aufsummiert und in einer Variablen "sum" abspeichert. - Nachdem Sie alle Zahlen innerhalb des beschriebenen Intervalls aufsummiert haben, dividieren Sie die Summe "sum" durch den Divisor "div". - Geben Sie "TRUE" aus falls die Division (sum/div) den Rest 0 ergibt, anderenfalls "FALSE". - Verwenden Sie für die Ausgabe "System.out.println()". Meine Ideen: public class Aufgabe3{ public static void main(String[] args) { int div = 14; //Variablen deklarieren int start = 42; //Variablen deklarieren int end = 678; //Variablen deklarieren int sum = 0; //Variablen deklarieren while ( start <= end) { sum = end + start; start++; } System.out.println(sum); //sum ausgeben if (sum % div == 0) { System.out.println("TRUE"); //TRUE ausgeben } else { System.out.println("FALSE"); //FALSE ausgeben } } |
|||||
|
||||||
13.10.2016, 07:44 | Auf diesen Beitrag antworten » | |||||
eulerscheZahl |
Damit überschreibst du jedes Mal das Ergebnis, sodass am Ende sum == 2 * end gilt. Du sollst aber aufsummieren, das heißt das alte Ergebnis weiterverwenden. Also sum = sum + .... Und was musst du jetzt noch addieren? |
|||||
13.10.2016, 11:57 | Auf diesen Beitrag antworten » | |||||
Elya | sum = sum + start? |
|||||
13.10.2016, 11:59 | Auf diesen Beitrag antworten » | |||||
eulerscheZahl | Genau. |
|||||
Anzeige | ||||||
|
||||||
13.10.2016, 12:00 | Auf diesen Beitrag antworten » | |||||
Elya | Ok, aber es gibt noch immer ein Fehler. public class Aufgabe3{ public static void main(String[] args) { int div = 14; //Variablen deklarieren int start = 42; //Variablen deklarieren int ende = 678; //Variablen deklarieren int sum = 0; //Variablen deklarieren while ( start <= ende) { //while-Schleife mit Bedingung schreiben sum = sum + start; //alle Zahlen zwischen start und ende aufsummiert, in sum speichern start++; //start um 1 erhöhen } System.out.println(sum); //sum ausgeben if (sum % div == 0) { System.out.println("TRUE"); //TRUE ausgeben } else { System.out.println("FALSE"); //FALSE ausgeben } } } |
|||||
13.10.2016, 12:07 | Auf diesen Beitrag antworten » | |||||
eulerscheZahl | Und was soll der Fehler sein? Ich kriege als Ausgabe
Deckt sich mit meiner Rechnung: |
|||||
13.10.2016, 12:09 | Auf diesen Beitrag antworten » | |||||
Elya | Ja, das bekomme ich auch, aber... 229320 TRUE org.junit.ComparisonFailure: <Click to see difference> at org.junit.Assert.assertEquals(Assert.java:115) at org.junit.Assert.assertEquals(Assert.java:144) at Aufgabe3Test.testOutput(Aufgabe3Test.java:20) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:6 2) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImp l.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod .java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable. java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.j ava:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.ja va:17) at org.junit.internal.runners.statements.FailOnTimeout$CallableStatement.call( FailOnTimeout.java:298) at org.junit.internal.runners.statements.FailOnTimeout$CallableStatement.call( FailOnTimeout.java:292) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.lang.Thread.run(Thread.java:745) Process finished with exit code -1 |
|||||
13.10.2016, 12:21 | Auf diesen Beitrag antworten » | |||||
Karlito | Bitte einfach mal die Ausgabe der Summe auskommentieren und schauen, ob es dann geht. Gruß, Karlito |
|||||
13.10.2016, 16:33 | Auf diesen Beitrag antworten » | |||||
Elya | ich verstehe bischen nicht |
|||||
13.10.2016, 17:21 | Auf diesen Beitrag antworten » | |||||
eulerscheZahl | Du hast offensichtlich einen Test, der deine Ausgabe mit der erwarteten vergleicht. In der Aufgabenstellung heißt es: " Geben Sie "TRUE" aus falls die Division (sum/div) den Rest 0 ergibt, anderenfalls "FALSE".". Du gibst aber zusätzlich die Summe aus. Wenn die Testroutine davon ausgeht, dass du nur TRUE/FALSE ausgibst, ist deine Ausgabe falsch. Entferne System.out.println(sum); //sum ausgeben und versuche es erneut. |
|