# Thread: Random Phone number generator

1. Member Join Date
Mar 2011
Posts
35
Rep Power
0

## Random Phone number generator

Hi again guys, I've been working on a personal project again in Unit 3 of my text book and this time they want me to make a random phone number generator. Here's the actual directions:

"Write an application that creates and prints a random phone number of the form XXX-XXX-XXXX.
Include the dashes in the output.
Do not let the first three digits contain an 8 or 9 (but don't be more restrictive than that),
and make sure that the second set of three digits is not greater than 742.
Hint: Think through the easiest way to construct the phone number. Each digit does not have to be determined separately."

With this assignment I came across 2 problems:

1. What I tried was that since the first 3 numbers have to be a random number with no 8's or 9's I tried doing this algorithm:

int first0, first1, first2, second, third, random0;

first0 = generator.nextInt (999);
random0 = generator.nextInt (8);
first1 = first0.replace('8', random0);
first2 = first1.replace('9' random0);

The problem is that Java won't allow me to generate random numbers this way. Are there any easier ways of generating numbers that doesn't contain specific number (such as 8 or 9 in this case?)

2. I was thinking about this throughout the whole project and what if I generate a number such as 27 (less than 3 or 4 digit number) rather than 3 or 4 digit numbers? How would it show 0027 or 027 instead of 27 for the phone numbers?

P.S. oh by the way I am only in Unit 3 of the text book, which contains "creating objects", "The string class", "packages", "The random class", "The math class", "Formatting Output", and "Enumerated types". Anything beyond that is a problem for me, so if someone can help me with this within my knowledge, I will be greatful.

MY ACTUAL WHOLE PROJECT:

import java.util.Random;
public class pp0303 {
public static void main (String[] args)
{
Random generator = new Random();
int first0, first1, first2, second, third, random0;

first0 = generator.nextInt (999);
random0 = generator.nextInt (8);
first1 = first0.replace('8', random0);
first2 = first1.replace('9' random0);

second = generator.nextInt (743);

third = generator.nextInt (9999);

System.out.println ("Your new phone number is: " + first2 + " - " + second + " - " + third);

}
}

RESULTS:

Exception in thread "main" java.lang.Error: Unresolved compilation problems:
Cannot invoke replace(char, int) on the primitive type int
Cannot invoke replace(char) on the primitive type int
Syntax error on token "random0", delete this token

at pp0303.main(pp0303.java:15) 2. ## Java Code:
`first0.replace('8', random0);`
The variable first0 is a primitive which do not have methods.

Two thoughts:

Use a loop, generate a 3 digit random number, if it doesn't contain a 8 or a 9 exit loop.

Generate 3 random numbers 0 inclusive to 8 exclusive and concatenate them together. 3. Member Join Date
Mar 2011
Posts
35
Rep Power
0

## Thanks for you comment again Junky.
However I can't seem to understand it... could you use easier language for this primitive user?
I don't really know how to use loops which would exit if it contains 8 or 9. 4. ## You would need another nested loop. You can either convert the number to a String and check each char. Or you can use mod and divide by 10 to get each digit.
Java Code:
```int number = 123;
System.out.println(number % 10);
System.out.println(number / 10);```
Above snippet shows how to do it for one digit. You can do that in a loop until you reach zero. 5. ## Why don't you use a loop?
Java Code:
```for (i <= 3)
{
random0 = generator.nextInt(8);
myString = myString.concat(Integer.toString(random0));
}```
Something like that would work. I didn't test my code segment but even if it doesn't work it should help you solve your problem. 6. Member Join Date
Mar 2011
Posts
35
Rep Power
0

## How do you change an integer to String?
I tried putting in the following:

String first4;

first4 = first0; // first0 was an integer.

output was: "Type mismatch: cannot convert from integer to String"

Also how can I use the above loop which you showed me effectively?
I was pondering over the ways to use it but i couldn't come up with an answer.
Would you mind showing me in more details? 7. ## Yep, that was my second suggestion. Probably a lot easier. 8. Member Join Date
Mar 2011
Posts
35
Rep Power
0

## oh thanks guys~
the reason why i didn't use loop was because the textbook still haven't gone through that far yet...
I'll try using the above example and get back to you guys ASAP 9. ## My example is much simpler and will achieve the same results as what Junky was suggesting.

The current final output of that snippet will result in the code being a string at the end of the loop. If you need the numbers to be integers then you can convert them back using this line.

Java Code:
`int myInteger = Integer.parseInt(myString);` 10. Member Join Date
Mar 2011
Posts
35
Rep Power
0

## okay so i looked in the book and loops are in Unit 5, which means I am not suppose to use a loop... any suggestions without using loops? 11. ## Do it the inefficient way.

Java Code:
```random0 = generator.nextInt(8);
myString = myString.concat(Integer.toString(random0));
random0 = generator.nextInt(8);
myString = myString.concat(Integer.toString(random0));
random0 = generator.nextInt(8);
myString = myString.concat(Integer.toString(random0));```
Loops are designed to increase the efficiency of repeated tasks. In this case 3 similiar tasks aren't a big deal, but if you had to run the same segment of code 10,000 times you would be prone to errors, and it would be a pain in the ass to code it all. Even copy paste would be tedious. 12. Member Join Date
Mar 2011
Posts
35
Rep Power
0

## thanks again guys~! I think i solved it!
You guys are awsome! 13. ## Thank you, come again. 14. Member Join Date
Apr 2011
Posts
19
Rep Power
0

## random phone number generator

thats my solution to this problem

// using random number generator
import java.util.Random;

public class chap2Project13
{
public static void main(String args[])
{
Random A = new Random();
int num1,
num2,
num3,
num4,
num5,
num6,
num7,
num8,
num9,
num10;

num1 = A.nextInt(8);
num2 = A.nextInt(8);
num3 = A.nextInt(8);
num4 = A.nextInt(8);
num5 = A.nextInt(5);
num6 = A.nextInt(3);
num7 = A.nextInt(2);
num8 = A.nextInt(2);
num9 = A.nextInt(2);
num10 = A.nextInt(2);
System.out.println("the random phone number is " + num1 + num2 + num3 +"-" + num4 + num5 + num6 + "-" + num7 + num8 +num9 + num10);
}

} 15. Member Join Date
May 2014
Posts
1
Rep Power
0

## Re: Random Phone number generator 16. ## Re: Random Phone number generator 