Как создать цикл, который останавливается в конце концов - PullRequest
0 голосов
/ 03 октября 2019

Пока у меня есть этот код.

        Scanner scan = new Scanner(System.in);//Creating the scanner

        int number;

        System.out.println("Enter a positive integer. Enter '-1' to quit.");//Asking the user to input a number
        number = scan.nextInt();//Scanning for the number

        if(number>0);{
            boolean prime = true;
            for(int j = 2; j <= number/2; ++j)
            {
                if(number % j == 0)//To see if the number is prime
                    {
                        prime = true;//If the equation is true, it's a prime number
                        break;
                    }
             }
             if (prime)//If its a prime number
                 System.out.println(number + " is a prime number.");
             else//If it is not a prime number
                 System.out.println(number + " is not a prime number.");
        }
    }
}

Код не зациклен правильно. Я буду вводить что-то, и это будет печатать результат бесконечное количество раз. Какие-либо предложения? Благодарю.

Ответы [ 2 ]

0 голосов
/ 03 октября 2019

Вот подход для вас:

Я добавил несколько комментариев, чтобы сделать его читабельным.

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Assignment4 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);//Creating the scanner

        int number = 0;
        //List to save all the numbers you write
        List<Integer> numbers = new ArrayList<>();

        System.out.println("Enter a positive integer. Enter '-1' to quit.");//Asking the user to input a number
        //This loop going to repeat until met the condition
        while(number != -1) {
            number = scan.nextInt();//Scanning for the number


            if(number>0){
                boolean prime = true;
                for(int j = 2; j <= number/2; ++j)
                {
                    if(number % j == 0)//To see if the number is prime
                        {
                            prime = false;
                            break;
                        }
                 }
                 if (prime)//If its a prime number
                     System.out.println(number + " is a prime number.");
                 else//If it is not a prime number
                     System.out.println(number + " is not a prime number.");
               //We save the number
               numbers.add(number);
            }
        }
        System.out.println("Your numbers were");
        numbers.forEach(System.out::println);


    }
}

Вывод:

Enter a positive integer. Enter '-1' to quit.
3
3 is a prime number.
5
5 is a prime number.
7
7 is a prime number.
8
8 is not a prime number.
31
31 is a prime number.
33
33 is not a prime number.
-1
-1 is a prime number.
Your numbers were
3
5
7
8
31
33
-1
0 голосов
/ 03 октября 2019

Это потому, что в вашей программе нет цикла. вы можете использовать:

do{

//read number
//Rest of your code that was inside the if- clause
}while(number>0)

вместо вашего if(number>0)

Поэтому вам нужно переместить часть, где вы читаете число ВНУТРИ цикла. Цикл do-while похож на обычный цикл while, но проверяет условие ПОСЛЕ первого запуска. Вы хотите, чтобы вы могли прочитать число внутри цикла, а затем проверить его в конце цикла. Для удобства использования вы также можете поместить строку, которая говорит пользователю, что делать («вставить -1, чтобы выйти») внутри цикла. Таким образом, вы перемещаете обе строки кода внутрь.

...