2015-02-11 37 views
-2

我不知道標題是否適合我即將問到的問題。生成與用戶輸入長度相同的數字

String input = scan.nextLine(); 
for(int ip=0; ip<=input.length(); ip++) 
{ 
Random rg = new Random(); 
int n = rg.nextInt(ip=input.length()); 
System.out.println(Integer.toBinaryString(n)); 
} 

從上面的代碼中,我提示用戶輸入任意數量的字符。使用for循環獲取輸入的長度,生成的隨機二進制數字的長度是不同的。我如何編輯以使隨機生成器打印出與用戶輸入相同的長度?例如,如下所示: 我的輸入:99999 應該輸出:00110 我的輸出:11

+0

rg.nextInt(5),因此,如果您轉換爲二進制,您將獲得最大的3位數字,它會給0-4隨機值。你可以在開始時追加0。 – Prashant 2015-02-11 06:15:07

+0

這裏是我的問題..如果用戶輸入8個字符怎麼辦?隨機發生器必須打印8個字符以及 – user3404818 2015-02-11 06:19:00

回答

0

可以使用循環並檢查n的值,如果它的二進制由具有相同的長度,然後進行打印。代碼如下:

Scanner scan = new Scanner(System.in); 
    String input = scan.nextLine(); 
    for(int ip=0; ip<=input.length(); ip++){ 
    Random rg = new Random(); 
    int n = 0; 
    while((n = rg.nextInt(ip=input.length()*input.length())) < Math.pow(2, input.length()-1) 
      && (n = rg.nextInt(ip=input.length()*input.length())) > Math.pow(2, input.length())) 
    { 
     continue; 
    } 
    System.out.println(Integer.toBinaryString(n)); 
    } 
+0

@ user3404818您的問題解決了嗎? – Prashant 2015-02-13 11:57:12

0
// note that StringUtils in org.apache.commons.lang3.StringUtils 
    private static final String getRandomBinaryNumber() { 
     Scanner scanner = new Scanner(System.in); 
     System.out.print("Enter input: "); 
     String input = scanner.next(); 
     System.out.println(); 
     int len = input.length(); 
     System.out.println("Input length: " + len); 
     Random rg = new Random(); 
     Integer randomInt = rg.nextInt((int) Math.pow(2, len)); 
     String binaryString = Integer.toBinaryString(randomInt); 
     final String result = StringUtils.leftPad(binaryString, len, "0"); 
     System.out.println("Random output: " + result); 
     return result; 
    }