我们必须编写一个从菜单中调用的方法,该菜单将找到输入数据值集合的乘积。程序应忽略所有负值,并在遇到零值时终止。我们编写了一些代码,但它没有按照应有的方式运行。我们已将其删除到忽略负数的位置,但不会正确计算和显示产品。
public void prodNoNegative () throws IOException
{
float input = 0;
float temp = 0;
String s;
System.out.println(" ");
System.out.println(" ");
System.out.println("Enter a string of numbers followed by 0 to exit");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = br.readLine();
StringTokenizer st = new StringTokenizer(line);
input = Float.parseFloat(st.nextToken());
if (input==0) {
System.out.print("END");
System.exit(1);
}
while (input !=0) {
if (input<0) {
System.out.println (input + " is ignored.");
} else if (input>0);
{
temp = input * temp;
}
input = Float.parseFloat(st.nextToken());
}
s = Float.toString(temp);
System.out.println("The product of all positive inputs is " +s);
}
答案 0 :(得分:1)
您将temp
初始化为0,因此无论您乘以什么,它仍然会为0.您应该将temp
初始化为1.
此外,您还有一个额外的分号:
else if (input>0);
{
temp = input * temp;
}
删除它,因为它被解释为一个空语句,因此无论else if
如何都会执行下一行。
第二次编辑:
您可以添加最初设置为false的标志布尔值,并在temp = input * temp
之后的行中将其赋值为true。如果所有输入值都为负,则布尔值永远不会设置为true。然后你可以在打印结果时检查布尔值。
像这样:
...
boolean flag = false;
...
else if (input>0);
{
temp = input * temp;
flag = true;
}
...
if (flag) System.out.println("The product of all positive inputs is " + s);
else System.out.println("You didn't enter any positive numbers.");