Ich brauche Hilfe |
Elya
Grünschnabel
Dabei seit: 12.10.2016
Beiträge: 6
|
|
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
}
}
|
|
12.10.2016 21:09 |
|
|
|
code: |
1:
|
sum = end + start; |
|
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?
__________________ Syntax Highlighting fürs Board (Link)
|
|
13.10.2016 07:44 |
|
|
Elya
Grünschnabel
Dabei seit: 12.10.2016
Beiträge: 6
|
|
|
13.10.2016 11:57 |
|
|
Elya
Grünschnabel
Dabei seit: 12.10.2016
Beiträge: 6
|
|
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:00 |
|
|
Elya
Grünschnabel
Dabei seit: 12.10.2016
Beiträge: 6
|
|
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:09 |
|
|
Karlito
Kaiser
Dabei seit: 11.04.2011
Beiträge: 1.461
|
|
Bitte einfach mal die Ausgabe der Summe auskommentieren und schauen, ob es dann geht.
Gruß,
Karlito
|
|
13.10.2016 12:21 |
|
|
Elya
Grünschnabel
Dabei seit: 12.10.2016
Beiträge: 6
|
|
ich verstehe bischen nicht
|
|
13.10.2016 16:33 |
|
|
|
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.
__________________ Syntax Highlighting fürs Board (Link)
|
|
13.10.2016 17:21 |
|
|
|