Новое в программировании. Прежде чем вы прокомментируете: я понимаю, что их более эффективные способы сделать это и уже есть. Я просто чувствую, что понимание процесса здесь сделает меня лучшим программистом. Следующий псевдокод, который я видел в классе. Я написал программу, которая принимает целое число и печатает каждое простое число вплоть до целого числа (userinput). Это то, что я придумал:Нужна помощь Споттинг Логическая ошибка в моей программе (простые числа)/понимание вывода
//Import Scanner.
import java.util.Scanner;
//Create class.
public class QuestionTwoA2
{
public static void main(String[] args)
{
System.out.println("Enter an integer:"); //Ask for user input.
int userInteger; //Create scanner object and collect user input.
Scanner keyboard = new Scanner(System.in);
userInteger = keyboard.nextInt();
boolean primeFlag = true; //Condition required for prime number loop.
int outer; //I localised these variables outside the loop so that I
int inner; //could test output by printing it.
//Checks natural numbers in between 2 and userInteger.
for (outer = 2; outer < userInteger; outer++)
{
for (inner = 2; inner < outer; inner++)
{
if (outer % inner == 0)
{
primeFlag = false;
//System.out.println(outer + " " + inner);
break;
}
}
if (primeFlag) //I think this statement causes a logic problem.
System.out.println(outer);
}
}
}
У меня есть/были операторы печати в различных частях моего кода просто визуализировать то, что значения я сравниваю, чтобы получить остаток. Мой выходной ток (для любого целого входа):
Enter an integer:
9
2
3
Логически мой код выглядит хорошо, но, очевидно, не работает, помогает объяснить, что на самом деле происходит была бы оценена.
set primeFlag = true перед внутренним контуром – Nyavro
Вы никогда не устанавливаете начальное значение primeFlag после установки его false. – pvg