请各位仁兄指教,我这程序错在哪了?/**
*获取50个0至300之间的随机整数,并输出到屏幕上; 
*取出上面50个整数中的偶数,倒序排列输出到屏幕上。 
*
**/import java.util.*;
import java.util.Arrays;
public class Demo5{
public static void main(String[] args){
Random r = new Random();
int[] num = new int[50];    
int count = 1;
for(int i=0; i<num.length; i++){
while(count<=50){
num[i] = r.nextInt(300);
System.out.print(num[i]);
System.out.print(" ");
count++;
 }  
 } 

System.out.println();
  System.out.println("--------------------");

  //排序并输出该数组
    Arrays.sort(num);  
  for(int i=0; i<num.length; i++){  
  System.out.print(num[i]);
  System.out.print(" ");
  }

   System.out.println();
  System.out.println("--------------------");
 
  //倒序输出数组中的偶数
  for(int i=num.length-1; i>=0; i--){
   if(num[i]%2 == 0){
   System.out.print(num[i]);
   System.out.print(" ");
   }
   } 
 
}
}

解决方案 »

  1.   

    整个for循环出现逻辑错误:1.当第一次进入for循环时,i=0,然后进入while循环,期间i始终等于0,num[i]始终是num[0],不过每一次while循环就为它重新赋值,所以打印出了正确结果;
    2.跳出while,进入第二次for循环,结果for一直在空循环,因为此时count已经等于51,while循环无法运行;
    3.结果就是:num[0]=52,其他均为默认值0;
    4.楼主只要将while循环去掉就ok了!
      

  2.   

    for(int i=0; i<num.length; i++){
                while(count<=50){    
                num[i] = r.nextInt(300);        
                System.out.print(num[i]);
                System.out.print(" ");            
                count++;
             }         
    你这地方有问题,你这个while循环从count=1到count=50时,i始终等于0,也就是说你根本没给num[1]到num[49]赋值
    改成:import java.util.*;
    import java.util.Arrays;
    public class Demo5{
        public static void main(String[] args){
            Random r = new Random();
            int[] num = new int[50];       
            
            for(int i=0; i<num.length; i++){
                 
                num[i] = r.nextInt(300);        
                System.out.print(num[i]);
                System.out.print(" ");            
               
             }         
          
            
            System.out.println();
             System.out.println("--------------------");    
            
             //排序并输出该数组
            Arrays.sort(num);     
             for(int i=0; i<num.length; i++){         
                 System.out.print(num[i]);
                 System.out.print(" ");
                 }
                
              System.out.println();
             System.out.println("--------------------");    
         
          //倒序输出数组中的偶数
          for(int i=num.length-1; i>=0; i--){
              if(num[i]%2 == 0){
                  System.out.print(num[i]);
                  System.out.print(" ");
                  }
              } 
                 
        }
    }
      

  3.   


    import java.util.*;
    import java.util.Arrays;public class Demo5 {
    public static void main(String[] args) {
    Random r = new Random();
    int[] num = new int[50];
    int count = 1;
    for (int i = 0; i < num.length; i++) {
    /*
     * 这个while循环是多余的,去掉就好了!
     */
    // while(count<=50){
    num[i] = r.nextInt(300);
    System.out.print(num[i]);
    System.out.print(" ");
    // count++;
    // }
    } System.out.println();
    System.out.println("--------------------"); // 排序并输出该数组
    Arrays.sort(num);
    for (int i = 0; i < num.length; i++) {
    System.out.print(num[i]);
    System.out.print(" ");
    } System.out.println();
    System.out.println("--------------------"); // 倒序输出数组中的偶数
    for (int i = num.length - 1; i >= 0; i--) {
    if (num[i] % 2 == 0) {
    System.out.print(num[i]);
    System.out.print(" ");
    }
    }
    }
    }
    去掉那个while循环就行了