Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 插入排序出错_Java_Arraylist_Insertion - Fatal编程技术网

Java 插入排序出错

Java 插入排序出错,java,arraylist,insertion,Java,Arraylist,Insertion,我有一个填充了随机整数的数组列表。我尝试使用插入排序进行排序,然后在屏幕上打印它们。除了插入排序外,所有操作都正常。。。不确定什么地方出了问题,有人能看一看,找出哪里出了问题。。。谢谢 public static ArrayList<Integer> oh = new ArrayList<Integer>(); public static ArrayList<Integer> gen2() { ArrayList<Integer> oh

我有一个填充了随机整数的数组列表。我尝试使用插入排序进行排序,然后在屏幕上打印它们。除了插入排序外,所有操作都正常。。。不确定什么地方出了问题,有人能看一看,找出哪里出了问题。。。谢谢

public static  ArrayList<Integer> oh = new ArrayList<Integer>();

public static ArrayList<Integer> gen2()
{
    ArrayList<Integer> oh = new ArrayList<Integer>();
    Random random = new Random();
    for (int i = 0; i < 100; i++)
    {
        oh.add(random.nextInt());
    }
    return oh;
}

public static  ArrayList<Integer> insertionSort(ArrayList<Integer>oh) {
    int i, j;
    for (i = 1; i < oh.size(); i++) {
        Integer tmp = oh.get(i);
        j = i;
        while ((j > 0) && (oh.get(j - 1).intValue() > tmp.intValue())) {
            oh.set(j, oh.get(j - 1));
            j--;
        }
        oh.set(j, tmp);
    }
    return oh;
}

public static void main(String[] args)
{
    System.out.println("Original List:");
    System.out.println(gen2());
    System.out.println("Sorted Arraylist:");
    System.out.print(insertionSort(oh));
}
publicstaticarraylist oh=newarraylist();
公共静态ArrayList gen2()
{
ArrayList oh=新的ArrayList();
随机=新随机();
对于(int i=0;i<100;i++)
{
oh.add(random.nextInt());
}
返回oh;
}
公共静态ArrayList insertionSort(ArrayListH){
int i,j;
对于(i=1;i0)和&(oh.get(j-1.intValue()>tmp.intValue()){
哦,set(j,哦,get(j-1));
j--;
}
oh.set(j,tmp);
}
返回哦;
}
公共静态void main(字符串[]args)
{
System.out.println(“原始列表:”);
System.out.println(gen2());
System.out.println(“排序数组列表:”);
系统输出打印(insertionSort(oh));
}

您正在跟踪oh变量

在gen2方法中,将其转换为

ArrayList<Integer> oh = new ArrayList<Integer>();
ArrayList oh=新的ArrayList();
对此

oh = new ArrayList<Integer>();
oh=newarraylist();

它不起作用的原因是,您声明了一个新的ArrayList(名为oh),其作用域就在gen2方法中。删除ArrayList会将新的ArrayList分配给原始的类oh引用。

@user5344755:在Eclipse中(可能还有其他IDE:中),当您使用局部变量对字段进行阴影处理时,有一个设置可以为这种情况启用警告。这真的帮助了很多次!该设置位于“首选项”->“Java”->“编译器”->“错误/警告”->“名称阴影和冲突”中。@li谢谢,我不知道!