我想让一个程序从用户中读取一个整数,然后将它们相乘并显示读取的整数的乘积。读取整数的循环 当用户按下0时停止。如果用户输入0作为第一个数字,则用户将无法提供其他任何数字(不将乘积添加到产品中的最后一个0)。在这种情况下,程序应显示“未输入数字!”
现在在这里我的代码
ProductNumbers.java
package L04b;
import java.lang.reflect.Array;
import java.util.Scanner;
public class ProductNumbers {
public static void main(String[] args) {
int num = -1;
boolean isValid = true;
int numbersEntered = 0;
int product = -1;
Scanner scnr = new Scanner(System.in);
System.out.println(
"This program reads a list of integers from the user\r\n"
+ "and shows the product of the read integers");
while (num != 0) {
System.out.print("Enter number = ");
int curNum = scnr.nextInt();
if (curNum == 0)
break;
numbersEntered++;
product *= num;
}
if (numbersEntered == 0) {
System.out.println("No numbers entered!");
} else {
System.out.println(product);
}
}
}
我知道这是完全错误的,我通常会设置一个模板,尝试找出需要更改的内容,然后通过这种方式,我也需要开始思考,学习不同的功能,因为我不知道知道如果输入的第一个数字为0,并且如果最后一个数字为0,该程序将停止而不将最后一个0乘以0(这样乘积不会最终为0)...我需要有人指导我该怎么做。
这里有我希望它如何工作的示例输出
This program reads a list of integers from the user
and shows the product of the read integers
Enter the number:
0
No numbers entered!
和
This program reads a list of integers from the user
and shows the product of the read integers
Enter the number:
2
Enter the number:
-5
Enter the number:
8
Enter the number:
0
The product of the numbers is: -80
答案 0 :(得分:2)
您有一个嵌套的for循环,为什么?
您只需要外部while
循环即可获取用户的输入,直到输入为0
。
此行:
product *= i;
将i
和for
循环的计数器乘以product
而不是用户的输入!
稍后,在这一行:
if (isValid = true)
如果要进行比较,则应将=
替换为==
,尽管这样做比较简单:
if (isValid)
您的代码可以简化为:
int num = -1;
int product = 1;
int counter = 0;
Scanner scnr = new Scanner(System.in);
System.out.println(
"This program reads a list of integers from the user\r\n"
+ "and shows the product of the read integers");
while (num != 0) {
System.out.print("Enter a number: ");
num = scnr.nextInt();
scnr.nextLine();
if (num != 0) {
counter++;
product *= num;
System.out.println(product);
}
}
if (counter == 0)
System.out.println("No numbers entered");
else
System.out.println("Entered " + counter + " numbers with product: " + product);
答案 1 :(得分:1)
解决此问题的一种方法是利用break;
关键字退出循环,然后可以在循环后处理最终结果。
类似这样的东西:
int numbersEntered = 0;
while (num != 0) {
int curNum = // read input
if (curNum == 0)
break;
numbersEntered++;
// do existing processing to compute the running total
}
if (numbersEntered == 0)
// print "No numbers entered!
else
// print the result
我认为关键是不要尝试在while循环内执行所有操作。自然地考虑一下“当用户输入更多数字时,要求输入更多数字,然后打印最终结果”