使用的编译器是IntelliJ IDEA4.5,学习用,别抓我盗版阿~!!
问题描述在注释里,请高人释疑!
import java.util.Random;/**
* Created by IntelliJ IDEA.
* User: 刘德华
* Date: 2005-6-2
* Time: 0:33:03
* To change this template use File | Settings | File Templates.
*/
public class RandomStringGenerator { private String str="";
int addRange(char a,char b){
int z=b-a;
return z;
} String nextString(int i) {
int size;
Random random;
size=addRange('a','z');
random=new Random();
for(int j=0;j<i;j++) {
// random=new Random(); 这句话放循环内,那么将会导致结果(str)全是同一个字符,
// 但是单步执行则可以生成不同的字符串,好奇怪的一个问题!单步执行和普通执行程序的结果不一样,郁闷呢了!
// 这句话放在放在循环外头则不会出现这种情况 int r = random.nextInt(size);
r=97+r;
str=str+(char)r;
}
return str;
} /**
* The main method
*
* @param args unused
*/
public static void main(String[] args) throws NullPointerException {
RandomStringGenerator generator=new RandomStringGenerator();
String s=generator.nextString(10);
System.out.println("s is "+s);
}
}
问题描述在注释里,请高人释疑!
import java.util.Random;/**
* Created by IntelliJ IDEA.
* User: 刘德华
* Date: 2005-6-2
* Time: 0:33:03
* To change this template use File | Settings | File Templates.
*/
public class RandomStringGenerator { private String str="";
int addRange(char a,char b){
int z=b-a;
return z;
} String nextString(int i) {
int size;
Random random;
size=addRange('a','z');
random=new Random();
for(int j=0;j<i;j++) {
// random=new Random(); 这句话放循环内,那么将会导致结果(str)全是同一个字符,
// 但是单步执行则可以生成不同的字符串,好奇怪的一个问题!单步执行和普通执行程序的结果不一样,郁闷呢了!
// 这句话放在放在循环外头则不会出现这种情况 int r = random.nextInt(size);
r=97+r;
str=str+(char)r;
}
return str;
} /**
* The main method
*
* @param args unused
*/
public static void main(String[] args) throws NullPointerException {
RandomStringGenerator generator=new RandomStringGenerator();
String s=generator.nextString(10);
System.out.println("s is "+s);
}
}
random=new Random();
int r = random.nextInt(size);
System.out.println(r);
有时候会出现不同的结果,运行多几次,就出现