日期:2014-05-20  浏览次数:20841 次

各位大侠帮帮忙啊~~~急!!
我写了一段代码,是输出一千个随机字符串,要求每个字符串的长度是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 ',