Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.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_Arrays_Sorting - Fatal编程技术网

我如何完成这个java代码?

我如何完成这个java代码?,java,arrays,sorting,Java,Arrays,Sorting,(这是一个项目,所以是的,这是家庭作业) 任务是使用用户输入创建数组(我能够做到),然后对于第二部分,使用单独的方法按升序排序数组,然后输出它。我已经让它做了我需要的一切,除了我不知道如何才能让它排序。说明中说,使用从0到长度的while循环找到最小值,然后将其与第一个值交换,但我不知道如何做到这一点。这就是我到目前为止所做的: public static void main(String[] args) { Scanner in = new Scanner(System.in);

(这是一个项目,所以是的,这是家庭作业)

任务是使用用户输入创建数组(我能够做到),然后对于第二部分,使用单独的方法按升序排序数组,然后输出它。我已经让它做了我需要的一切,除了我不知道如何才能让它排序。说明中说,使用从0到长度的while循环找到最小值,然后将其与第一个值交换,但我不知道如何做到这一点。这就是我到目前为止所做的:

public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    int storage = getNumDigits(in);
    if(storage == 0){
        System.out.print("No digits to store? OK, goodbye!");
        System.exit(0);
    }
    int []a = new int [storage];
    a = getDigits(a, in);
    displayDigits(a);
    selectionSort(a);
}

private static int getNumDigits(Scanner inScanner) {
    System.out.print("Please enter the number of digits to be stored: ");
    int stored = inScanner.nextInt();
        while(stored < 0){
        System.out.println("ERROR! You must enter a non-negative number of digits!");
        System.out.println();
        System.out.print("Please enter the number of digits to be stored: ");
        stored = inScanner.nextInt();
        }
    return stored;
}

private static int[] getDigits(int[] digits, Scanner inScanner) {
    int length = digits.length;
    int count = 0; 
    int toBeStored = 0;
    while(count < length){
    System.out.print("Enter integer " +count +": ");
    toBeStored = inScanner.nextInt();
    digits[count] = toBeStored;
    count++;
    }
    return digits;
}

private static void displayDigits(int[] digits) {
    int len = digits.length;
    System.out.println();
    System.out.println("Array before sorting:");
    System.out.println("Number of digits in array: " +len);
    System.out.print("Digits in array: ");
    for(int cnt = 0; cnt < len-1; cnt++){
        System.out.print(digits[cnt] + ", ");
    }
    System.out.println(digits[len-1]);
}

private static void selectionSort(int[] digits) {
    int l = digits.length;
    System.out.println();
    System.out.println("Array after sorting:");
    System.out.println("Number of digits in array: " +l);
    System.out.print("Digits in array: ");
    int index = 0;
    int value = digits[0];
    int indVal = digits[index];
    while(index < l){
        indVal = digits[index];
        if(indVal <= value){
            indVal = value;
            digits[index] = value;
            index++;
        }
        else if(value < indVal){
            index++;
        }
        System.out.print(value);
        //This is where I don't know what to do.
    }
}
publicstaticvoidmain(字符串[]args){
扫描仪输入=新扫描仪(系统输入);
int storage=getNumDigits(in);
如果(存储==0){
System.out.print(“没有要存储的数字?好的,再见!”);
系统出口(0);
}
int[]a=新的int[存储];
a=获取数字(a,in);
显示数字(a);
选择排序(a);
}
专用静态int getNumDigits(扫描仪扫描程序){
System.out.print(“请输入要存储的位数:”);
int stored=inScanner.nextInt();
while(存储<0){
System.out.println(“错误!必须输入非负数的数字!”);
System.out.println();
System.out.print(“请输入要存储的位数:”);
stored=inScanner.nextInt();
}
返回存储;
}
专用静态int[]getDigits(int[]位,扫描仪扫描){
int-length=位数.length;
整数计数=0;
int toBeStored=0;
while(计数<长度){
系统输出打印(“输入整数”+计数+:”;
toBeStored=inScanner.nextInt();
数字[计数]=待计数;
计数++;
}
返回数字;
}
私有静态void displayDigits(int[]位){
int len=位数。长度;
System.out.println();
System.out.println(“排序前的数组:”);
System.out.println(“数组中的位数:“+len”);
系统输出打印(“数组中的数字:”);
对于(int-cnt=0;cnt

  • 首先假设数组中的第一项是最小的
  • 您需要跟踪它的值及其在数组中的位置
  • 然后,您需要遍历数组的其余部分以查找较小的项
  • 一旦知道最小项的索引,就只需简单地交换两个:

    temp=数组[0]

    数组[0]=数组[indx]

    数组[indx]=温度


您提到的方法名称是selectionSort,我认为您应该在这里使用选择排序代码

私有静态void selectionSort(int[]位){ int len=位数。长度

    /* Selection sort starts */
    for (int i = 0; i < len; i++) {   
        int min = i;   
        for (int j = i + 1; j < len; j++) {   
            if (digits[j]<digits[min]) {   
                min = j;   
            }   
        }   
        /**
         * Swap data
         */
        int temp = digits[i];
        digits[i] = digits[min];
        digits[min] = temp;
    } 

    /* Selection sort ends */

    /* Print necessary information here */
    System.out.println();
    System.out.println("Array after sorting:");
    System.out.println("Number of digits in array: " +len);
    System.out.print("Digits in array: ");
   /* Print digit  */ 
    for(int cnt = 0; cnt < len-1; cnt++){
        System.out.print(digits[cnt] + ", ");
    }
    System.out.println(digits[len-1]);
}
/*选择排序开始*/
对于(int i=0;i如果(digits[j]查看array.sort.或只做一个简单的冒泡排序,谷歌搜索冒泡排序,在直接跳入代码之前,可能更容易直观地看到手头的任务。我曾使用笔和键盘来帮助我完成编码任务,因此我可能建议也这样做。因此,您的具体最低示例是
selectionSort()
method。伙计们,不,方向就在那里。如果你以专业的方式编写,你不需要在@DennisMeng上贴上“家庭作业”的横幅:和Jon Skeet的完美问题链接。我发现GIF非常擅长向人们展示排序算法的工作原理。另外,观看它也很酷:)同意。在我学习排序算法的时候,如果能有这么棒的东西可以使用,那就太好了。