This is what I have so far:
public class Numbers
{
// Fields
public int[] numberLine;
public int randomNumber;
public Random randomGen;
// Constructor : Initialise number array
public Numbers()
{
numberLine = new int[6];
randomNumber = 0;
randomGen = new Random();
}
// Method : Generate 6 random numbers in a range 1 to 49
public void populateArray()
{
for(int index = 0; index < numberLine.length; index++)
{
randomNumber = 1 + randomGen.nextInt(49);
numberLine[index] = randomNumber;
}
Arrays.sort(numberLine);
}
...
}
This code will create an array of six integers and populated by random numbers (1 – 49) using the for loop then sorts the elements into ascending order.
What I would like to do after that is have a method print the array elements in the following format:
** nn nn nn nn nn nn **
Normally this could be done using:
System.out.println(""** " + numberLine[0] + " " + numberLine[1]...
And so on…
However, since there is the possibility of some of the numbers having only one digit, how would one go about ensuring the proper format by leaving a black space?
So that it would look like this (example numbers):
** 7 9 27 37 39 48 **
Notice the extra space in front of the single digit elements. I’ve thought of something like:
for(int index = 0; index < numberLine.length; index++)
{
if(numberLine[index] <= 9)
{
singleDigit++;
}
else
{
continue;
}
}
that could then be used in something like:
for(int index = 0; index < numberLine.length; index++)
{
if(index < singleDigit)
{
//make the single digit have a space before it
}
}
But I can’t think of a way to make that work since an array of integers can only contain integer values so I’m probably not on the right lines with that method. It could, perhaps, be done with an array of strings but then sorting them into ascending order could get complicated.
Anyone know how I could get it to print in the required format?
Thanks in advance!
EDIT:
Something I just thought might work is to use this:
for(int index = 0; index < numberLine.length; index++)
{
if(numberLine[index] <= 9)
{
singleDigit++;
}
else
{
continue;
}
}
and then use something like:
if(singleDigit = 0)
{
System.out.println("** " + numberLine[0] + " " + numberLine[1]
+ " " + numberLine [3] //etc
}
else
{
if(singleDigit = 1)
{
System.out.println("** " + numberLine[0] + " " +
numberLine[1] + " " + numberLine [3]
// etc (notice the extra space between the first ""
}
}
And continue that all the way up to singleDigit = 6. That should work, I think, but there must be an easier/tidier way of doing it.
Basically, you print part of the string as you go along, checking if you need to add numbers as you go.