2016-09-23 5 views
1

Ich muss ein Programm schreiben, in dem Methode die Summe der gelesenen positiven Zahlen zurückgibt, und liest die Eingabe vom Benutzer, bis Null eingegeben wird.Rückgabesumme der positiven Zahl

Was ich bis jetzt habe, berechnet nicht die Summe der eingegebenen positiven Zahlen und ich brauche bitte etwas Hilfe. Hier

ist das, was ich bisher:

readAndSumPositives()(bemerken Sie zum Scanner gegeben, nicht System.in verwenden) - liest aus Benutzer gegeben, bis 0 und gibt Summe der positiven Zahlen lesen.

Beispiele:

♦ Benutzer gibt: 0 => return 0

♦ Benutzer gibt 1 2 3 0 => liefert 6 (1 + 2 + 3)

♦ Benutzer gibt 1 - 2 3 0 => liefert 6 (1 + 3, -2 überspringen, da es negativ ist)

public static int readAndSumPositives(Scanner in,PrintStream out) 
{ 
    int input; 
    int count; 
    int sum; 
    int total; 

    sum = 0; 
    count =0; 
    total = sum+count; 

     out.println("Please enter a number"); 
     input=in.nextInt(); 
    while(input != 0 && input != -2 && input != -3 && input != -4) { 
     sum += input; 
     count++; 
     out.println("Enter your next positive number"); 
     input=in.nextInt(); 
    } 

    if (input == 0) { 
     return sum; 
    } else return input; 
} 

Hier ist der Code, der ausgeführt wird, wenn ich diese Methode in GitBash laufen

012.
private static int readAndSumPositivesFrom(String input) { 

    ByteArrayOutputStream out_bs = new ByteArrayOutputStream(); 
    PrintStream out=new PrintStream(out_bs); 

    Scanner in_s = new Scanner(new ByteArrayInputStream(input.getBytes())); 
    int ans = Assignment5.readAndSumPositives(in_s,out); 
    in_s.close(); 
    return ans; 
} 

@Grade(points = 20) 
@Test 
public void testReadAndSumPositives() {  
    Assert.assertEquals(30, readAndSumPositivesFrom("10 20 0 ")); 
    Assert.assertEquals(20, readAndSumPositivesFrom("10 -20 10 0 ")); 
    Assert.assertEquals(10, readAndSumPositivesFrom("1 2 -2 3 -3 4 -4 0 ")); 
} 

Jede Hilfe wird geschätzt und Punkte werden vergeben!

Vielen Dank im Voraus.

+1

* Was ich bisher nicht ausgeführt habe ... Hier ist der Code, der ausgeführt wird ... * Diese Frage ist ein wenig verwirrend. – shmosel

+0

Was ich meine ist, dass es nicht die Summe der eingegebenen positiven Zahlen berechnet. – rls1982

+0

Was ist Ihre Eingabe? Was ist die Ausgabe? Was ist die erwartete Ausgabe? – shmosel

Antwort

1

Sie geben falsche Werte zurück. Sie sollten input zurückgeben, wenn die erste Eingabe 0 und sum ist, wenn dies nicht der Fall ist. Du machst genau das Gegenteil. Wenn die erste Eingabe außerhalb der Schleife erfolgt und dann in der Schleife überprüft wird und die nächste Eingabe in der Schleife ausgeführt wird, wird ein logischer Fehler verursacht, wenn der Benutzer an erster Stelle eine positive Zahl eingibt (oder eher eine Syntax Fehler seit input ist außerhalb der Schleife nicht initialisiert). Tun Sie alles innerhalb der Schleife und überprüfen Sie, was Sie zurückgeben.

+0

Das hat funktioniert! Vielen Dank! – rls1982

-1
while(input != 0 && input != -2 && input != -3 && input != -4) 
//instead of above logic,use logic mentioned below.... 

int sum=0; 
while(input!=0) 
{ 
    if(input>0) 
    sum+=input; 
    out.println("Enter your next positive number"); 
    input=in.nextInt(); 
    //What is the purpose of using "count"? 
} 
return sum; 
+0

Der Zweck von "count" besteht einfach darin, die Anzahl der zu "sum" hinzugefügten ganzen Zahlen zu zählen, obwohl der ** _ Wert von "count" niemals verwendet wird _ **. – progyammer

Verwandte Themen