首页 > 解决方案 > 我的 Array.sorts 没有按预期打印

问题描述

我的 Arrays.sort 被忽略了。正在打印数组而不进行排序。我尝试添加不同的参数并将其放置在不同的位置,但没有任何运气。我的程序假设在从文件中读取整数之后对数组进行排序。

package filterSort;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Arrays;
import java.util.Scanner;
import java.util.*;




public class FilterSort {

    public static int[] doubleArrayAndCopy(int[] arr) {
        
        int len = arr.length;
        
        
        int max = arr.length * 2;
        int[] copyArr = Arrays.copyOf(arr,max);
        int length = copyArr.length-1;
        Arrays.sort(copyArr, 0, length);
        
        return copyArr;

    }

    public static void main(String[] args) {
        int[] data = new int[8];
       
        
       
        try {
            File file = new File("data.txt");
            Scanner myReader = new Scanner(file);
            
            
            for(int i = 0; myReader.hasNext(); i++) {
                
                if(i == data.length - 1) {
                    
                    data = doubleArrayAndCopy(data);
                    
                    
                }else {
                
                    if(myReader.hasNextInt()) {
                        data[i] = myReader.nextInt();
                        System.out.println(data[i]);
                    }else {
                        myReader.next();
                    }
                }
            }
        } catch (FileNotFoundException e) {
            
            System.out.println("File not found");
        }
        
    }

}

这是我的输出:

4
44
99
1
2
9
3
4
90
162
92
0
1
22
4
2
3
99
-8
100
99
-3
98

我需要以这种格式对其进行排序。

如果我将 System.out.println 和 Arrays.sort 放在最后:

} catch (FileNotFoundException e) {
        
        System.out.println("File not found");
    }
    Arrays.sort(data, 0, data.length - 1);
   
    for(int j = 0; j < data.length; j++) {
        System.out.println(data[j]);
    }
    

它对其进行排序,但它会从空索引中输出所有额外的 0。

标签: javaarrayssorting

解决方案


我看到你想在每 8 个项目之后打印你的排序数组,如果我这是正确的,请尝试copyArr在函数中打印,然后返回一个空的。并在 for 循环之后添加此代码

if(data[0]!=null){
  data = doubleArrayAndCopy(data);}

希望这会有所帮助


推荐阅读