本问题已经有最佳答案,请猛点这里访问。
我只想生成6位数的随机数,范围应该从000000到999999开始。
new Random().nextInt(999999)正在返回我的号码,但它不是6位数。
没有000000这样的数字。 数字是0,可以在其显示表示中填充到"000000",但0与000000的数字相同。 如果您想要6位数字,则需要100000到999999范围内的数字。 如果你需要一个6位数字符串,生成一个几乎和你一样的数字(参见下面我对Karol的评论),然后通过填充到6位数字转换为字符串。
所以你只想生成100000到999999之间的数字?
显示时,数字是强制显示"000000"而不是"0"吗?
谢谢,我得到了解决方案。
就这么简单,你可以使用你的代码,只需在这里做一件事
String.format("%06d", number);
这将以字符串格式返回您的号码,因此"0"将为"000000"。
这是代码。
public static String getRandomNumberString() {
// It will generate 6 digit random Number.
// from 0 to 999999
Random rnd = new Random();
int number = rnd.nextInt(999999);
// this will convert any number sequence into 6 character.
return String.format("%06d", number);
}
还有一件事,你不能得到"000000"作为数字,在数字上它只是"0",这就是我在这里返回字符串的原因。
我明白了,这很好。
如果您需要一个六位数字,则必须从100000开始
int i = new Random().nextInt(900000) + 100000;
前导零没有效果,000000与0相同。如果您使用的是Java 7+,则可以使用ThreadLocalRandom进一步简化它:
int i = ThreadLocalRandom.current().nextInt(100000, 1000000)
899999 - > 900000,因为nextInt保证生成小于其参数的数字。
第二个语句应该是ThreadLocalRandom.current()。nextInt(100000,1000000),以覆盖最多6位数到999999。
这是java中生成6位随机码的代码。
import java.util.*;
public class HelloWorld{
public static void main(String []args)
{
Random r=new Random();
HashSet set= new HashSet();
while(set.size()<1)
{
int ran=r.nextInt(99)+100000;
set.add(ran);
}
int len = 6;
String random=String.valueOf(len);
for(int random1:set)
{
System.out.println(random1);
random=Integer.toString(random1);
}
}
}
我知道这很困难,但你可以这样做:
为BinaryNumber创建一个类;
创建一个构造函数,生成一个6个字符的char [],其中每个单元都使用0到1的随机数生成
覆盖toStrig()方法,以便它可以将数字char []作为字符串返回,如果要显示它。然后创建一个方法toInt(),通过带有for的char对字符串char进行esamin,并通过将当前数字乘以10加到i的pow来将其转换为十进制基数:
char[] digits = {‘1’ , ‘0’ , ‘1’ , ‘1’ , ‘0’ , ‘1’};
//random
int result = 0;
for( int i = 0; i < digits.length; i++) {
result += Integer.parseInt(digits[i]) * Math.pow(10, i);
}
return result;
1 + nextInt(2)应始终给出1或2.然后将其乘以10000以满足您的要求,然后在[0..9999]之间添加一个数字。
已经在这里解决了
public int gen()
{
Random r = new Random( System.currentTimeMillis() );
return ((1 + r.nextInt(2)) * 10000 + r.nextInt(10000));
}
public int gen() { Random r = new Random( System.currentTimeMillis() ); return ((1 + r.nextInt(2)) * 10000 + r.nextInt(10000)); }
您可以编辑您的答案,以包含上述评论中的代码块等其他信息。