java排序问题,请问哪里出错了?该改哪里

//java基本语法:排序
//演示:各种排序法
//1.冒泡排序法
//2.选择排序法
package shuzu16;
import java.util.*;
public class Dome2 {

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
    int len=100000;

    int[] arr1=new int[len];

    for(int i=0;i<len;i++){
        //让程序随机产生一个1-10000数
        //Math.random()会随机产生一个0-1
        int t=(int)(Math.random()*10000);
        arr1[i]=t;
    }



  //创建一个Bubble类

/*   Bubble bubble=new Bubble();
     bubble.sort(arr1);
 */

   //创建一个Select类
   Select1 select=new Select1();
   //在排序前打印系统时间
   Calendar cal=Calendar.getInstance();
   System.out.println("排序前"+cal.getTime());
   select.sort(arr1);

   //重新获得实例why(因为getInstance是单态)
   cal=Calendar.getInstance();
   System.out.println("排序后"+cal.getTime());
   //输出最后结果
   for(int i=0;i<arr1.length;i++){
       System.out.println(arr1[i]+"");
   }
}

class Select1{
//选择排序
public void sort(int arr[]){

    //我认为第一个数是最小的
    int temp=0;
    for(int j=0;j<arr.length;j++){
    int min=arr[j];
    //记录最小数的下标
    int minIndex=j;
    for(int k=j+1;k<arr.length;k++){
        if(min>arr[k]){
            //修改最小
            min=arr[k];
            minIndex=k;
        }
    }
    //当退出for就找到这次的最小值
    temp=arr[j];
    arr[j]=arr[minIndex];
    arr[minIndex]=temp;

    }
}

}

}

class Bubble{

//排序方法1
public void sort(int arr[]){
     int temp=0;
       //排序
       //外层循环,他一共走几趟
       for(int i=0;i<arr.length-1;i++){
           //内层循环,开始逐个比较,如果发现前一个数比后一个数大,则交换
           for(int j=0;j<arr.length-1-i;j++){
               if(arr[j]>arr[j+1]){
                   //换位
                   temp=arr[j];
                   arr[j]=arr[j+1];
                   arr[j+1]=temp;
               }
           }
       }
}

}
调试出现
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
No enclosing instance of type Dome2 is accessible. Must qualify the allocation with an enclosing instance of type Dome2 (e.g. x.new A() where x is an instance of Dome2).

at shuzu16.Dome2.main(Dome2.java:34)

3个回答

是因为你的类Select1类是在Demo2的同一个类文件中定义的,这就是内部类的使用了。所以 Select1 select=new Select1();报错了。
把Select1和Bubble类都单独定义为一个类就好了。

Calendar cal=Calendar.getInstance();
这是报错位置,是不是没有引用便使用方法了

可以如同@毕小宝说的,将Select1定义成类似Bubble的在同一个文件中,但在Demo2之外的类;或者在Select1之前加上private static变成静态内置类。
private static class Select1{...}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!