各位大侠帮帮忙啊~~~急!!
我写了一段代码,是输出一千个随机字符串,要求每个字符串的长度是32位,字符串里面的字符必须是A到Z、a到b和1到9中间的某一个,并且每个字符串里面必须同时有字符和数字。我编完后本来没有什么大错误,但是在运行的时候出现了一个这样的错误:Exception in thread "main "
java.lang.OutOfMemoryError: Java heap space。我不知道怎么改正,请各位帮帮我!代码如下:
import java.util.*;
public class suijizifuchuan {
public static void main(String[] args) {
int i = 0,t = 0,s = 0,r,flag1,flag2;
char[] zifuji = { 'a ', 'b ', 'c ', 'd ', 'e ', 'f ', 'g ', 'h ', 'i ', 'j ', 'k ',
'l ', 'm ', 'n ', 'o ', 'p ', 'q ', 'r ', 's ', 't ', 'u ', 'v ', 'w ', 'x ',
'y ', 'z ', 'A ', 'B ', 'C ', 'D ', 'E ', 'F ', 'G ', 'H ', 'I ', 'J ', 'K ',
'L ', 'M ', 'N ', 'O ', 'P ', 'Q ', 'R ', 'S ', 'T ', 'U ', 'V ', 'W ', 'X ',
'Y ', 'Z ', '0 ', '1 ', '2 ', '3 ', '4 ', '5 ', '6 ', '7 ', '8 ', '9 '};
StringBuffer randomzifuchuan = new StringBuffer();
Random random = new Random();
while(i < 1000) {
for(int j = 0;j < 32;j++) {
t = random.nextInt(zifuji.length);
randomzifuchuan.append(zifuji[t]);
}
flag1 = 0;
flag2 = 0;
while(flag1 * flag2 != 0 & s < 32) {
r = (int)randomzifuchuan.toString().charAt(s);
if(r <= 57) flag1 = 1;
else flag2 = 1;
s++;
}
if(flag1 * flag2 != 0){
System.out.println(randomzifuchuan);
i++;
}
}
}
}
------解决方案--------------------你的While循环条件不对,flag1*flag2!=0恒为假,while进不去,所以接下来的if也自然进不去,导致i不能递增,死循环,而且你的那个while的条件是想说并列条件吧,应该是&&而不是一个&
------解决方案--------------------import java.util.*;
public class suijizifuchuan {
public static void main(String[] args) {
int i = 0,t=0;
char[] zifuji = { 'a ', 'b ', 'c ', 'd ', 'e ', 'f ', 'g ', 'h ', 'i ', 'j ', 'k ',
'l ', 'm ', 'n ', 'o ', 'p ', 'q ', 'r ', 's ', 't ', 'u ', 'v ', 'w ', 'x ',
'y ', 'z ', 'A ', 'B ', 'C ', 'D ', 'E ', 'F ', 'G ', 'H ', 'I ', 'J ', 'K ',
'L ', 'M ', 'N ', 'O ', 'P ', 'Q ', 'R ', 'S ', 'T ', 'U ', 'V ', 'W ', 'X ',