user1816679 user1816679 - 1 year ago 48
Java Question

The code after my for loop doesn't execute

I have a short program that creates an array of integers and removes non-primes:

public class Main {

public static void main(String[] args){

int[] nums = new int[100];
for (int i = 0; i < nums.length; ++i){
nums[i] = i + 1;

int j = 0;
while(j < nums.length){
System.out.print(" ");

for (int n = 1; n < nums.length / 10; n++){
for (int p = n; p < nums.length; p += nums[n]){
if(p > n){
nums[p] = 0;


//this code doesn't execute


The statement which is supposed to simply print "x" doesn't execute, nor does any other statement I put after the for loop. The program does not enter an infinite loop, so what's going on? I feel like this is something obvious that I'm just missing.

Edit: it was an infinite loop, I just didn't realize it.

Answer Source

In your p loop, on the second iteration, p > n is true and you set nums[p] to 0. From that point forward, p will never increase, because your incrementer is p += nums[n] and nums[n] is 0, and so your loop never terminates.

This sort of problem is best solved by using a debugger. Using a debugger is a fundamental skill for a programmer. With a debugger, you can step through statements, inspect variables, and see exactly what your code is doing. It's not an advanced technique, it's essential from Day 1 so you can correctly diagnose issues with your code. If you don't currently know how to use a debugger, stop what you're doing and learn to use one, it will be incredibly valuable and time-saving to you. There's almost certainly one built into your IDE.