Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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_Sorting_Radix - Fatal编程技术网

Java 我需要帮助编程基数排序

Java 我需要帮助编程基数排序,java,sorting,radix,Java,Sorting,Radix,任务是编写一个基数排序程序,从数字列表中读取数据,但我无法计算出最高数字的位数 到目前为止,我从一个文件(numbers.txt)中读取这些数字,然后将它们打印到一个名为numbers的ArrayList中。然后我通过数字找出最大的数字和它的10的位置 然后从他们那里我迷路了,不知道怎么做剩下的 import java.io.File; import java.io.FileNotFoundException; import java.util.*; public class RadixSort

任务是编写一个基数排序程序,从数字列表中读取数据,但我无法计算出最高数字的位数

到目前为止,我从一个文件(numbers.txt)中读取这些数字,然后将它们打印到一个名为numbers的ArrayList中。然后我通过数字找出最大的数字和它的10的位置

然后从他们那里我迷路了,不知道怎么做剩下的

import java.io.File;
import java.io.FileNotFoundException;
import java.util.*;
public class RadixSort {
    final static int[] sizeArray = {10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000, Integer.MAX_VALUE};
    public static void main(String [] args){
        ArrayList <Integer> numbers= new ArrayList <Integer>();
        try {
            Scanner sc=new Scanner(new File("numbers.txt"));
            while(sc.hasNext()){
                numbers.add(sc.nextInt());
            }//end while
            PrintArray(numbers);
            System.out.println();
        } //end try
        catch (FileNotFoundException e) {
            System.out.println("The file cannot be found");
        }//end catch
        int digits=FindDigits(numbers);
        Radix(numbers, digits);
    }//end main

    public static void PrintArray(ArrayList<Integer> a){
        for(int i=0; i<a.size(); i++){
            System.out.print(a.get(i) + " ");
        }//end for
    }//end printArray

    public static int FindDigits(ArrayList<Integer> numbers){
        int biggest=numbers.get(0);
        for(int i=0; i<numbers.size();i++){
            if(numbers.get(i)>biggest){
                biggest=numbers.get(i);
            }//end if
        }//end for
        if(biggest==Integer.MAX_VALUE){
            return 10;
        }//end if
        else{
        for(int i=0;i<sizeArray.length; i++){
            if(biggest/sizeArray[i]==0){
                return i+1;
            }//end if
        }//end for
        }//end else
        return 1;
    }//end find digits
    public static void Radix(ArrayList<Integer> numbers, int digits){
        ArrayList<Integer> sorted= new ArrayList<Integer>();
        int divisor=1;
        int digit;
        for(int i=0; i<digits;i++){
            divisor*=10;
        }//end for
        for(int i=0; i<numbers.size();i++){
            digit=numbers.get(i)%divisor;
            if(digit/10>0){
                digit=(digit/(digits-1));
                sorted.set(digit, numbers.get(i));
            }//end if
            else{
                sorted.set(digit, numbers.get(i));
            }//end else
        }//end for
        PrintArray(sorted);
    }//end radix
}//end class
导入java.io.File;
导入java.io.FileNotFoundException;
导入java.util.*;
公共类RadixSort{
最终静态int[]sizeArray={10100100010000,100000,10000000100000001000000000,Integer.MAX_VALUE};
公共静态void main(字符串[]args){
ArrayList编号=新的ArrayList();
试一试{
Scanner sc=新扫描仪(新文件(“numbers.txt”);
while(sc.hasNext()){
添加(sc.nextInt());
}//结束时
打印阵列(数字);
System.out.println();
}//结束尝试
catch(filenotfounde异常){
System.out.println(“找不到文件”);
}//端接
整数位数=FindDigits(数字);
基数(数字、数字);
}//端干管
公共静态void打印数组(ArrayList a){

对于(int i=0;i这不是堆栈溢出问题的本意。请尝试进一步了解您的问题并在此处询问详细信息。请阅读堆栈溢出问题指南

你的问题没有显示出足够的理解或研究,关于这个主题有大量的信息可用

也就是说,谷歌的第一个结果是:

“我不知道该怎么办”不是一个问题,这毕竟是一个问答论坛,请阅读我的答案