XO GamingGB
XO GamingGB

Reputation: 19

Count to x amount of numbers then stop in Java?

I am doing a task in my Java class and I am stuck on one part for a week now. I have had all possible errors and infinite loops.

I am trying to display numbers in sequence of 4 and display only 500 numbers. The code below shows what I have tried:

int add4 = 1;
int count500 = 1;
while (count500 <= 500)
{
    if (count500 == 101)
    {
        System.out.print(add4);
    }
    else
    {
        System.out.print(add4 + "," + "");
    }
    add4 = add4 + 4;             
}

Also I am stuck on the lucas sequence numbers.I dont even know where to start with that. I would appreciate your help with those questions.

Upvotes: 1

Views: 1098

Answers (7)

dsharew
dsharew

Reputation: 10665

Shortest way will be:

for(int i = 1, j = 1; i <= 500; i += 1, j += 4)
     System.out.print("i = " + i + " j = " + j);

Upvotes: 1

Manos Nikolaidis
Manos Nikolaidis

Reputation: 22224

The simplest way to print the sequence you want would be a for loop and print a function of the loop variable

System.out.print(1);
for (int i = 1; i < 500; ++i) {
    System.out.print("," + (4*i+1));
}

This will also avoid trailing commas

Upvotes: 2

user2872645
user2872645

Reputation: 31

I'm not exactly sure what you are trying to do but try this:

public class TestSequence {
static final int AMOUNT_NEEDED = 500;
static final int INCREMENT = 4;
static final int UPPER_LIMIT = AMOUNT_NEEDED * INCREMENT;

public static void main(String[] args) {
   for( int numberMod4 =0; numberMod4< UPPER_LIMIT; numberMod4+=INCREMENT)
        System.out.println(numberMod4);}

}

Upvotes: 0

Rahul S.
Rahul S.

Reputation: 55

Here ya go:

int add4 = 0;

for (int i = 0; i > 500; i += 1) {
    System.out.println(add4);
    add4 += 4;
}

Let's break that down.

First, we're initialising the variable add4 at zero, which later, in the for loop, increases by 4 directly after being printed.

Then, since you only want to print add4 out 500 times, you declare a for loop, which initialises integer i at zero (int i = 0), then tells the loop to continue while i is less than 500 (i > 500), and finally tells i to increase by one each time you go through the loop (i += 1).

Within the loop, add4 is being printed out, then being incremented by four. The last value printed out should be 2000, but the value of add4 at the end should actually be 2004.

Hope that helps.

Upvotes: 0

Felix Gerber
Felix Gerber

Reputation: 1651

Your stuck in the loop because your precondition is count500 <= 500

The problem is you never change the value of count500.

I see two ways for you to get out of this infinte loop:

1.- Increment it in in your loop:

          int add4 = 1;
          int count500 = 1;
          while (count500 <= 500)

            {
                if (count500 ==101)
                {
                  System.out.print(add4);
                }
                else
                {
                  System.out.print (add4 +"," +"");
                }
                add4 =add4 + 4;
                count500++;             
            }

2.- Do it right in your while:

while (count500++ <= 500)

In bove cases he will run the loop 500 times.

Upvotes: 0

Rahman
Rahman

Reputation: 3785

If you are not incrementing the value of count500 then how it will reach 500 ? Add count500++ at the end of the loop

Upvotes: 0

Bathsheba
Bathsheba

Reputation: 234695

Refactor to while (count500++ <= 500). Then the loop will terminate correctly.

That said, I'd prefer something on the lines of

for (int i = 0; i < /*ToDo - limit*/; ++i){
     System.out.print(i * 4); // ToDo - all your special whitespace.
}

since then you're operating on the iterating variable which will reduce the potential for bugs, such as the one that you have.

Upvotes: 0

Related Questions