扫描器拾取的垃圾值-- Java [duplicate]

k10s72fa  于 2022-11-27  发布在  Java
关注(0)|答案(1)|浏览(127)

此问题在此处已有答案

What's the simplest way to print a Java array?(36个答案)
11小时前关门了。
我正在尝试对一个数组进行降序排序。数组的大小来自用户输入,然后数组的内容来自用户输入。然后数组被传递给一个函数,该函数对它进行排序。问题是,它不是打印排序后的数组,而是打印[I@5caf905d。通过print语句,我已经将问题定位到扫描仪从用户输入中获取[I@5caf905d作为最终值,它正好出现在所有正确输入之后。我不知道这个值是从哪里来的,而且我也不明白为什么函数会把它打印出来,好像它是整个数组一样。感谢所有帮助!
下面是我的代码。输入为:10分39秒

import java.util.Scanner;

public class LabProgram 
{
   public static void sortArray (int [] myArr, int arrSize)
   {
      int temp;
      int i;
      
      for (i = 0; i < arrSize - 1; i++)
      {
         if (myArr[i] < myArr[i + 1])
         {
            temp = myArr[i];
            myArr[i] = myArr[i + 1];
            myArr[i + 1] = temp;
         }          
      }
      System.out.println(myArr);
   }

   public static void main(String[] args) 
   {
      Scanner scnr = new Scanner (System.in);
      int [] myArr;
      int arrSize;
      int i; 
      
      
      arrSize = scnr.nextInt();
      myArr = new int[arrSize];
      for (i = 0; i < arrSize; i++)
         myArr[i] = scnr.nextInt();
         
      sortArray (myArr, arrSize);  
   }
}
ukqbszuj

ukqbszuj1#

您应该使用最简单的排序算法之一,例如Selection Sort

public static void selectionSortDesc(int[] arr) {
    for(int i = 0; i < arr.length; i++) {
        // k index with max value
        int k = i;
        
        // find k with max value
        for(int j = i; j < arr.length; j++) {
            if(arr[k] < arr[j])
                k = j;
        }
        
        // swap current element with the max value
        swap(arr, i, k);
    }
}

private static void swap(int[] arr, int i, int j) {
    int tmp = arr[i];
    arr[i] = arr[j];
    arr[j] = arr[i];
}

顺便说一句,你不应该把排序和打印混合在一起,最好把这些部分分开。

相关问题