我想在java中创建一个数字序列,如下所示:
1234957203969304597600234960702349100903450234847456282934857697900389262454869346
我想在序列中创建1000个数字..
我该怎么做?
我试着这样做:
String seq=null;
for (int i=0; i<1000; i++) {
seq=String.format("%d",i);
}
System.out.println(seq);
它不起作用,打印出来:999
感谢
答案 0 :(得分:7)
StringBuilder sb = new StringBuilder();
for (int i=0; i<1000; i++) {
sb.append(i);
}
System.out.println(sb.toString());
作为一般说明,虽然str = str + someString;
可以正常工作,但在循环中它很快就会失控。尝试10000次迭代,你会看到(消耗大量的RAM和CPU)。
StringBuilder
更好,如果真的需要以这种方式构建一个字符串,并且当一个字符序列追加多次时,它的性能总是更好。< / p>
答案 1 :(得分:4)
您需要将其附加到String。我建议使用StringBuilder。
你正在做的是每次都覆盖字符串
StringBuilder sb = new StringBuilder();
for(int i=0; i<1000; i++) {
sb.append(Integer.toString(i);
}
System.out.println(sb.toString());
答案 2 :(得分:1)
要使代码生效,请将seq=String.format("%d",i);
更改为seq+=String.format("%d",i);
。
然而,更好的方法是使用StringBuilder
这样:
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 1000; i++){
sb.append(i);
}
String seq = sb.toString();
System.out.println(seq);
编辑:实际上,这不会生成长度为1000
的字符串,因为它添加如下:012345678910...
(&gt; 10是两个或三个数字而不是一个)。
所以,请使用Random
类对0-9
的随机数进行类似的尝试:
Random randomGenerator = new Random();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 1000; i++){
sb.append(randomGenerator.nextInt(9));
}
String seq = sb.toString();
System.out.println(seq);
答案 3 :(得分:0)
如果你想创建一个长度为1000的流,每个数字是随机的,那么试试Math.random函数。
答案 4 :(得分:0)
您的代码正在打印999,因为您总是用循环的最后一个值覆盖字符串,您需要附加数据,而不是一遍又一遍地重写...
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 1000; i++) {
sb.append(i);
}
System.out.println(sb.toString());