JAVA CODE CLARIFICATION

Here is my script that works.  I need to have the numbers, when generated, not be duplicated.  I understand that I should use an array, but I do not know how.  Some clarification would be appreciated.  Thank you.

import java.util.Random;
public class Math
{
   public static void main ( String args[] )
   {
      Random randomNumbers = new Random();
      int number;
      for ( int counter = 1; counter <= 30; counter++)
      {
         number = 1 + randomNumbers.nextInt( 49 );
         System.out.printf("%d   ", number);
         if ( counter % 6 == 0 )
            System.out.println();
      }
   }
}
suekathurAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

sh0eCommented:

import java.util.Random;
public class Math
{
   public static void main ( String args[] )
   {
      Random randomNumbers = new Random();
      int number;
bool[] oldnums = new int[50];
      for ( int counter = 1; counter <= 30; counter++)
      {
while(oldnums[number]){number = 1 + randomNumbers.nextInt( 49 );}
 
         System.out.printf("%d   ", number);
         if ( counter % 6 == 0 )
            System.out.println();
      }
   }
}

Open in new window

0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
suekathurAuthor Commented:
The way I read the code is that you want to use a boolean stating that oldnums will equal a new integer and if the old number equals the same number then continue with the random number selection.  Am I reading this right?
I also tried running the new code and it does not work so I know things are missing.  Can you point me in the right direction, please.  Thanks
0
sh0eCommented:
Correct.  It's the easiest  way.  Just two lines.

I made a typo, it's boolean not bool.

import java.util.Random;
public class Math
{
   public static void main ( String args[] )
   {
      Random randomNumbers = new Random();
      int number;
boolean[] oldnums = new int[50];
      for ( int counter = 1; counter <= 30; counter++)
      {
while(oldnums[number]){number = 1 + randomNumbers.nextInt( 49 );}
 
         System.out.printf("%d   ", number);
         if ( counter % 6 == 0 )
            System.out.println();
      }
   }
}

Open in new window

0
Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

suekathurAuthor Commented:
When running the code I get the following error:
incompatible types
found: int[]
required: boolean[]
boolean[] oldnums = new int[50];
I know that the boolean will need to be changed to a string and I have looked on the internet for possible solutions but I do not understand their reasoning.  I found this:  String myString = Integer.toString(my int value).









0
sh0eCommented:
Sorry, I don't know what got into me.  I initialized the boolean array wrong.
import java.util.Random;
public class Math
{
   public static void main ( String args[] )
   {
      Random randomNumbers = new Random();
      int number;
boolean[] oldnums = new boolean[50];
      for ( int counter = 1; counter <= 30; counter++)
      {
while(oldnums[number]){number = 1 + randomNumbers.nextInt( 49 );}
 
         System.out.printf("%d   ", number);
         if ( counter % 6 == 0 )
            System.out.println();
      }
   }
}

Open in new window

0
suekathurAuthor Commented:
Receiving the error: variable number might not have been initialized
while(oldnums[number]){number = 1 + randomNumbers.nextInt( 49 );}
the error happens under the [number] in the code.
Since the number has been intialized as an int number in the above code I do not know whyI am getting this.
0
sh0eCommented:

import java.util.Random;
public class Math
{
   public static void main ( String args[] )
   {
      Random randomNumbers = new Random();
      int number;
boolean[] oldnums = new boolean[50];
      for ( int counter = 1; counter <= 30; counter++){
         do{number = 1 + randomNumbers.nextInt( 49 );}while(oldnums[number]);
 
         System.out.printf("%d   ", number);
         if ( counter % 6 == 0 )
            System.out.println();
      }
   }
}

Open in new window

0
suekathurAuthor Commented:
This still does not work.  I am going to try a different method - maybe two arrays instead of one.
Consider this closed.
Thanks for your help.
0
suekathurAuthor Commented:
Thank you for your help.  This is getting too complicated for me to understand so I am going to try something else.  It was suggested utilizing two arrays instead of one so I will try that,
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Java

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.