Ich brauche Hilfe

Neue Frage »

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
}
}
 
Auf diesen Beitrag antworten »
eulerscheZahl

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?
Auf diesen Beitrag antworten »
Elya

sum = sum + start?
Auf diesen Beitrag antworten »
eulerscheZahl

Genau.
 
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
}
}
}
Auf diesen Beitrag antworten »
eulerscheZahl

Und was soll der Fehler sein?
Ich kriege als Ausgabe
code:
1:
2:
229320
TRUE

Deckt sich mit meiner Rechnung: [latex]678\cdot(678+1)\cdot\frac 1 2 - 42\cdot(42-1)\cdot\frac 1 2 = 229320[/latex]
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
Auf diesen Beitrag antworten »
Karlito

Bitte einfach mal die Ausgabe der Summe auskommentieren und schauen, ob es dann geht.

Gruß,

Karlito
Auf diesen Beitrag antworten »
Elya

ich verstehe bischen nicht traurig
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.
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »