Пока l oop не возвращается к началу с новым вводом от пользователя - PullRequest
0 голосов
/ 28 марта 2020

Я пытался усовершенствовать эту программу самостоятельно, и я просто не вижу, что я делаю неправильно. Цель этой программы - сделать эти вещи.

1) запросить у пользователя номер

2) если число положительное, выведите число

3) если число также является простым числом, выведите его также простое число

4) продолжайте выполнять вышеуказанные действия, пока пользователь не введет отрицательное число.

Проблема заключается в том, что программа работает и определяет, является ли введенное число простым числом номер или нет, в начале. После этого, когда у пользователя запрашивают другой номер (если он больше 0), программа просто не вернется к началу, чтобы определить, простое ли число. Вместо этого он просто придерживается того, какое значение было определено в начале (простое или не простое), и выводит то же выражение, что и для первого значения, для второго. Я хочу, чтобы он каждый раз переоценивал значение, чтобы увидеть, является ли число простым или нет, пока пользователь не введет отрицательное число. PS Это мой первый год обучения на степень C .S. Я считаю программирование действительно увлекательным и сложным (концепция). Но я принимаю это вызов и нахожу чувство выполненного долга каждый раз, когда прорабатываю эти проблемы.

import java.util.Scanner;

public class Prime3 {

    public static void main(String[] args) {
        int userNum;
        int i = 2;
        boolean isPrime = true;
        Scanner input = new Scanner(System.in);

        // Ask user for initial number
        System.out.println("Please enter a number.");
        userNum = input.nextInt();

        // Determining whether or not number entered is prime
        while (i <= userNum/2) {
            System.out.println("Checking if " + i + " is a multiple of n");
            if (userNum%i == 0) {
                System.out.println(i + " is a multiple of " + userNum);
                isPrime = false;
                break;
                }
            i++;
            }
        // Print out user number if the number is positive. 
        while (userNum > 0) {
            System.out.println("You entered the number, "  + userNum);
            if (isPrime) { // If it's a prime, state that it's a prime
            System.out.println("No even multiples found. " + userNum + " is a prime number");
            }
            userNum = input.nextInt();
        }
        System.out.println("Invalid input. Program now ending.");
        System.exit(0);
    }
}

Ответы [ 2 ]

1 голос
/ 28 марта 2020

Ну, я вижу проблему. Вы должны переместиться while (userNum > 0) на вершину. Итак, ваш окончательный код должен выглядеть примерно так:

public class Prime3 {

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    // Ask user for initial number
    System.out.println("Please enter a number.");
    int userNum = input.nextInt();

    while (userNum > 0) {
        int i = 2;
        boolean isPrime = true;


        // Determining whether or not number entered is prime
        while (i <= userNum / 2) {
            System.out.println("Checking if " + i + " is a multiple of n");
            if (userNum % i == 0) {
                System.out.println(i + " is a multiple of " + userNum);
                isPrime = false;
                break;
            }
            i++;
        }
        // Print out user number if the number is positive. 

        System.out.println("You entered the number, " + userNum);
        if (isPrime) { // If it's a prime, state that it's a prime
            System.out.println("No even multiples found. " + userNum + " is a prime number");
        }
        userNum = input.nextInt();
    }
    System.out.println("Invalid input. Program now ending.");
    System.exit(0);
}
0 голосов
/ 28 марта 2020

В целом, конструкция этого кода подвержена ошибкам. Вы должны сделать что-то вроде:

  1. set userNum = 0
  2. enter while (userNum> = 0)
  3. Вызвать метод, который проверяет, является ли userNum положительным, если да print
  4. Вызовите метод, который проверяет, является ли userNum простым, если да, print
  5. получает новое значение из консоли ввода в userNum
  6. конечное тело l oop.

Если вы будете следовать, проблем не должно быть.

...