2015-02-11 36 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; 
    }