2016-09-23 56 views
1

我不得不编写一个程序,其中返回读取的正数的总和,并将读取用户的输入,直到输入零。返回正数的总和

我到目前为止没有计算输入正数的总和,我需要一些帮助。

这是我到目前为止有:

readAndSumPositives()(注意到你给出的扫描仪,不使用System.in) - 从用户读取,直到给出0,并返回正数的总和读。

实例:

♦用户输入:0 =>返回0

♦用户输入1 2 3 0 =>返回6(1 + 2 + 3)

♦用户输入1 - 2 3 0 =>返回6(1 + 3,跳过-2因为它是负的)

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; 
} 

这里是正在执行的代码,当我在GitBash

运行该方法
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 ")); 
} 

任何帮助被赞赏和点将被授予!

在此先感谢。

+1

*我到目前为止没有执行...下面是正在执行的代码... *这个问题有点混乱。 – shmosel

+0

我的意思是它没有计算输入正数的总和。 – rls1982

+0

你的意见是什么?输出是什么?预期产出是多少? – shmosel

回答

1

您正在返回错误的值。当第一个输入是0sum时,您应该返回input。你做的恰恰相反。另外,如果用户首先输入一个正数(或者更确切地说是一个语法),那么将第一个输入移到循环外,然后在循环中检查它并获取循环中的下一个输入,将导致逻辑错误错误,因为input未在循环外初始化)。处理循环中的所有内容并检查你要返回的内容。

while(true){ //infinite loop 
    out.println("Enter positive number to add, 0 to stop."); 
    input = in.nextInt(); 
    if(input == 0) 
     break; 
    if(input > 0) 
     sum+= input; 
} 
return sum; 
+0

工作正常!非常感谢你! – 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

“count”的目的仅仅是计算添加到“sum”的整数数量,尽管'count'的** _值从不使用_ **。 – progyammer