gpt4 book ai didi

java - 返回正数之和

转载 作者:太空宇宙 更新时间:2023-11-04 12:13:31 25 4
gpt4 key购买 nike

我必须编写一个程序,其中方法返回读取的正数之和,并将读取用户的输入,直到输入零。

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

这是我到目前为止所拥有的:

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

感谢任何帮助,并将奖励积分!

提前致谢。

最佳答案

您返回了错误的值。当第一个输入是 0 时,您应该返回 input;当第一个输入不是 0 时,您应该返回 sum。你所做的恰恰相反。此外,如果用户首先输入正数,则在循环外部获取第一个输入,然后在循环中检查它并在循环中获取下一个输入,必然会导致逻辑错误(或者更确切地说,由于输入未在循环外部初始化而导致语法错误)。执行循环内的所有操作并检查返回的内容。

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;

关于java - 返回正数之和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39652719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com