Произведение числа, введенного пользователем, программа останавливается, когда пользователь вводит 0 - PullRequest
0 голосов
/ 08 февраля 2019

Я хочу, чтобы программа читала целые числа от пользователя по одному, умножала их и показывала произведение прочитанных целых чисел.Цикл для чтения целых чисел останавливается, когда пользователь нажимает 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) ... мне нужен кто-то, кто поможет мне, как я могу это сделать.

Вот пример вывода того, как я хочу, чтобы он работал

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 голосов
/ 08 февраля 2019

У вас есть вложенный цикл, почему?Вам нужен только внешний цикл 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);
0 голосов
/ 08 февраля 2019

Одним из способов решения этой проблемы является использование ключевого слова 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.Подумайте об этом естественным образом, «пока пользователь вводит больше цифр, попросите больше цифр, а затем напечатайте окончательный результат»

...