一个菜鸟问题.
我用的是SDK1.6;IDE是NB
按照书写了这么一个小程序:定义一个方法,该方法接受两个整数,上界和下界,并创建一个数组,该数组包含上界下界之间所有的整数.class RangeLister {    int [] makeRange (int lower, int upper){
    int[] range =new int [(upper-lower)+1];
    for (int i=0;i<range.length;i++){
        range[i]=lower++;}
    return range;
}
   
    public static void main(String[] arguments) {
        // TODO code application logic here
 int [] range;
 RangeLister lister=new RangeLister();
 range=lister.makeRange (4,3);
 System.out.print("The  arrat:[");
 for (int i=0;i<range.length;i++){
     System.out.print(range[i]);    }
System.out.println("}");    }}
输出是:The arrat[]里面并没有数组..不知道为什么..

解决方案 »

  1.   

    range=lister.makeRange (4,3); 
    lower=4 upper=3
    int[] range =new int [(upper-lower)+1];
    数组长是0.
      

  2.   

    对啊,int[] range =new int [(upper-lower)+1]; 
    等于:int[] range = new int[(3 - 4) + 1] = new int[0];
      

  3.   

    最好的方法就是在makeRange()方法开始处做一个判断。也就是要求lower <= upper,否则就抛出异常
      

  4.   

      int [] makeRange (int lower, int upper){ 
    if(upper>lower){
        int[] range =new int [(upper-lower)+1]; 
        for (int i=0;i <range.length;i++){ 
            range[i]=lower++; } 
    }else{
    int[] range =new int [(lower-upper)+1]; 
        for (int i=0;i <range.length;i++){ 
            range[i]=upper++; }
        return range; 

      

  5.   

    int [] makeRange (int lower, int upper){ 
    if(upper>lower){ 
        int[] range =new int [(upper-lower)+1]; 
        for (int i=0;i <range.length;i++){ 
            range[i]=lower++; } 
    }else{ 
    int[] range =new int [(lower-upper)+1]; 
        for (int i=0;i <range.length;i++){ 
            range[i]=upper++; } 
        return range;