2013-10-28 66 views
0

我想創建一個範圍內的隨機電話號碼。格式爲(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

nextInt需要一個參數:http://docs.oracle.com/javase/7/docs/api/java/util/Random.html#nextInt(int)'AREACODE = nextInt(700)+ 100 ;'開始你。 – Radiodef

回答

1

良好,基本實現,則需要在兩個範圍

  • [1生成的數字; 7]
  • [100; 742]

要在範圍[m; N]你可以寫:
更新(刪除的Math.random())

int numberInRange = m + new Random().nextInt(n - m + 1); 

HTH

+1

不要做Math.random()* 48.這是越野車。總是使用Math.nextInt(48)來代替。 – iluxa

+0

@iluxa好的,謝謝你的信息,我會更新我的帖子 – kiruwka

+0

檢查瞭解更多信息:http://stackoverflow.com/questions/738629/math-random-versus-random-nextintint – iluxa

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之間 您
可以採取同樣的本金,第二範圍

0

你可以嘗試下:

int sec = java.util.concurrent.ThreadLocalRandom.current().nextInt(100, 743); 

等與電話號碼的其他部分。

此方法返回給定的最小值(包含)和綁定(不包含)之間的僞隨機數,均勻分佈的值。

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);