用户输入的数字乘积,当用户输入0时程序停止

时间:2019-02-08 17:15:29

标签: java product

我想让一个程序从用户中读取一个整数,然后将它们相乘并显示读取的整数的乘积。读取整数的循环 当用户按下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

2 个答案:

答案 0 :(得分:2)

您有一个嵌套的for循环,为什么?
您只需要外部while循环即可获取用户的输入,直到输入为0
此行:

product *= i;

ifor循环的计数器乘以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循环内执行所有操作。自然地考虑一下“当用户输入更多数字时,要求输入更多数字,然后打印最终结果”