【问题标题】:Sort array of integers对整数数组进行排序
【发布时间】:2014-11-21 04:34:09
【问题描述】:

我的程序遇到的问题是,当我打印所有数字时,我输入的第一个数字重复了两次并替换了第二个数字

例如。如果我输入 1,3,5,7,9,11,13,15,17,19 输出是 1,1,5,7,9,11,13,15,17,19

我该如何解决这个问题?

import java.util.Scanner;
import java.util.Arrays;

public class InputSort_Integers
{
public static void main(String[] args)
{
    // Declarations
      final  int[] count = new int [10];

    // Scanner 
    Scanner scanner = new Scanner(System.in);

    // Scanner Loop
    for (int i = 0; i < count.length; i++)
    {

        System.out.print("Enter " + count.length + " numbers (Press enter after each entry): ");  
        count[i] = scanner.nextInt();       

    }

    // Print sorted number
    int sorted = printNumbers(count);                                                 

}

public static int printNumbers(int[] count)
{

    // Print loop
    for (int i=0; i<count.length; i++)
    {
        System.out.println(count[i]);
    // Sort Numbers
        Arrays.sort(count);

    }
 return count.length;
} 

}

【问题讨论】:

  • 我运行它时不会这样做:ideone.com/SLds9F
  • 您确定输入的不是1,0,5,7,9,11,13,15,17,19

标签: java arrays methods integer


【解决方案1】:

您正在打印第一个数字,然后从循环中排序。您应该在循环开始之前对数字进行一次排序。将您的 printNumbers 方法更改为:

public static int printNumbers(int[] count)
{
    // Sort Numbers
    Arrays.sort(count);

    // Print loop
    for (int i=0; i<count.length; i++)
    {
        System.out.println(count[i]); 
    }
    return count.length;
}

【讨论】:

    【解决方案2】:

    您只调用 Arrays.sort 一次,而不是每次都通过循环。更正了 printNumbers:

    public static int printNumbers(int[] count)
    {
        // Sort Numbers
        Arrays.sort(count);
    
        // Print loop
        for (int i = 0; i < count.length; ++i)
        {
            System.out.println(count[i]);
        }
    
        return count.length;
    } 
    

    【讨论】:

      【解决方案3】:

      您在 for 循环中调用 Arrays.sort(count);,而您可能希望在 for 循环之前调用它。当我删除此行时,它解决了问题。

      【讨论】:

        最近更新 更多