问答详情
源自:7-1 编程练习

找不到哪错了,求大神指教!


import java.util.Arrays;

public class HelloWorld {

    public static void main(String[] args) {
                int scores[]=new int[]{89,-23,64,91,119,52,73};
                HelloWorld Hello=new HelloWorld();
                System.out.println("前三名成绩是:");
                Hello.rangKing(scores);
             
            }
            
            //定义方法完成成绩排序并输出前三名的功能
            public void rangKing(int scores[]){
                Arrays.sort(scores);
                for(int i=scores.length;i>=0;i--){
                    int num=0;
                    if(scores[i]<0||scores[i]>100)
                        continue;
                    num++;
                    if(num<=3){
                    System.out.println(scores[i]);
                    }
                }
                
                }
            }
   

提问者:夏木啊 2016-08-08 18:27

个回答

  • 慕粉3784601
    2016-08-08 21:23:43
    已采纳

    i=scores.length-1,如果是=scores.length的话,会报数组越界的吧

  • 江励志
    2016-08-08 22:41:40

        public void rangKing(int scores[]){

                    Arrays.sort(scores);

                     int num=0;

                    for(int i=scores.length-1;i>=0;i--){

                       

                        if(scores[i]>0&&scores[i]<100)

                        {num++;

                        System.out.println(scores[i]);

                        }

                        if(num==3)break;

                       

                    }

                    }


  • 江励志
    2016-08-08 22:35:58

       for(int i=scores.length;i>=0;i--)

    这句错了,i=scores.length越界了,应该改成i=scores.length-1

  • aLIEz3
    2016-08-08 21:25:32

    1.for(int i=scores.length;i>=0;i--){
        scores.length应该改为scores.length-1;此数组中没有第7位元素,只有0,1,2,3,4,5,6;
    2.int num=0;
        num的定义要移到for循环外;
    3.  if(num<=3){
           System.out.println(scores[i]);
        }
        1)应该是num>3。这是一个判断,取三个成绩就跳出循环,不再执行,因此
        2)if语句的语句块应该是break,跳出循环
        3)System.out.println(scores[i]);这个输出语句要移到if语句外,但要在for循环中
    
    正确代码:
    package day02;
    
    import java.util.Arrays;
    
    public class Test06 {
    
    	public static void main(String[] args) {
    		int[] scores = {89 , -23 , 64 , 91 , 119 , 52 , 73};
    		Test06 t = new Test06();
    		t.showTop3(scores);
    	}
    	public void showTop3(int[] scores){
    		Arrays.sort(scores);
    		int num = 0;
    		for(int i = scores.length-1;i>=0;i--){
    			
    			if(scores[i]<0||scores[i]>100){
    				continue;
    			}
    			num++;
    			if(num>3){
    				break;
    			}
    			System.out.println(scores[i]);
    		}
    	}
    }


  • 纔訾
    2016-08-08 21:07:02

    ...大胸弟,if(num<=3)...这不是循环语句。,

    1. 一般不确定循环次数的用while

    2. 确定循环次数的用for ,switch