我正在尝试创建一个范围随机的电话号码。格式为(xxx)-xxx-xxx,区域代码不以0,8或9开头,下一组三个在100-742范围内,最后一组4可以是任何数字。我将如何创建前两个部分?任何帮助,将不胜感激。谢谢!
import java.util.*;
import java.text.*;
public class PhoneNumber{
public static void main(String[] arg){
Random ranNum = new Random();
//int areaCode = 0;
//int secSet = 0;
//int lastSet = 0;
DecimalFormat areaCode = new DecimalFormat("(000)");
DecimalFormat secSet = new DecimalFormat("-000");
DecimalFormat lastSet = new DecimalFormat("-0000");
//DecimalFormat phoneNumber = new DecimalFormat("(###)-###-####");
int i = 0;
//areaCode = (ranNum.nextInt()); //cant start with 0,8,9
//secSet = (ranNum.nextInt()); // not greater than 742 and less than 100
//lastSet = (ranNum.nextInt(999)) + 1; // can be any digits
i = ranNum.nextInt();
System.out.print(areaCode.format(i));
i = ranNum.nextInt();
System.out.print(secSet.format(i));
i = ranNum.nextInt();
System.out.print(lastSet.format(i));
}
}
答案 0 :(得分:1)
在范围内有随机整数[m; n]你可以写:
已更新(删除Math.random())
int numberInRange = m + new Random().nextInt(n - m + 1);
HTH
答案 1 :(得分:1)
1,2,3,4,5,6,7 制作7个不同的值
ranNum.nextInt(7)+1; //So 1 is your lowest number and 7 is the number of different solutions
nexInt的范围介于0和intPassed 独占之间,
所以ranNum.nextInt(7)
将在0到6之间运行,+ 1使1 ... 7
这将介于1到7之间
您可以为第二个范围采用相同的原则
答案 2 :(得分:0)
您可以尝试下一个:
int sec = java.util.concurrent.ThreadLocalRandom.current().nextInt(100, 743);
电话号码的其他部分等等。
此方法返回给定最小值(包含)和绑定(不包括)之间的伪随机均匀分布值。
答案 3 :(得分:0)
只要一个大于99且小于800的随机数,那么下一个就会大致相同。
Random rand = new Random();
// add 1 to make it inclusive
max min
int firstRandomSet = rand.nextInt((799 - 100) + 1) + 100;
//none starts with 0,8, or 9
int secondRandomSet = rand.nextInt((742 - 100) + 1) + 100;
//produces anything from 100-742
要获得数字0001 - 9999,您必须具有创造性。
int maxValues= 9999;
int thirdRandomSet = rand.nextInt(maxValues);
System.out.printf("%04d\n", thirdRandomSet);