【问题标题】:Sorting array in an ascending array在升序数组中排序数组
【发布时间】:2015-05-15 18:51:58
【问题描述】:

当我尝试对数组进行排序时,我得到的结果是:

The sorted array is [0, 0, 0, 0, 0, 0, 0, 0]

用户用最终应该排序的8 数字填充数组。但我得到的是一堆0s。 为什么我收到0s

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

public class SortArray {

    public static void main(String[] args)
    {
        Scanner kbd = new Scanner(System.in);
        int[] numbers = new int[8];
        for(int i = 0; i < numbers.length; i++)
        {
            System.out.println("Enter the number for index " + i);
            int number = kbd.nextInt();
        }


        for(int i = 0; i < numbers.length; i++)
            for(int j = 1; j < numbers.length; j++)
            {
                if (numbers[i] > numbers[j]) 
                {
                    int temp = numbers[i];
                    numbers[i] = numbers[j];
                    numbers[j] = temp;
                }
            }
        System.out.println("The sorted array is " + Arrays.toString(numbers));
    }

}

【问题讨论】:

  • 数字是一个数组。使用数字[i]代替数字。

标签: java arrays sorting


【解决方案1】:

您没有将用户输入分配给您的数组,这就是所有元素保持为 0 的原因。

改变

int number = kbd.nextInt();

numbers[i] = kbd.nextInt();

【讨论】:

    【解决方案2】:

    问题在于这些代码行:

    for(int i = 0; i < numbers.length; i++)
            {
                System.out.println("Enter the number for index " + i);
                int number = kbd.nextInt();
            }
    

    特别是int number = kbd.nextInt();

    为 Eran 的回答添加一点解释,您在上面那一行中所做的是创建一个新的变量编号,并分配您从 Scanner kbd 获得的值。当您声明int(意味着您在左侧写int)时,您正在创建一个变量,该变量将保存int 值。

    这里的主要问题是,在您将其分配给名为number 的变量之后,您的循环将关闭并且根本不使用该变量。它被销毁/删除/垃圾收集并释放价值。下次您再次绕过该循环时,将再次为一个名为 number 的新变量分配来自扫描仪的值。

    现在还要注意numbernumbers 是不同的类型,numbers 是一个 int 数组,而 number 只是一个 int。

    通过将int number 更改为numbers[i],您是在告诉Java 将从扫描器kbd 接收到的int 分配给位于i 位置的数组numbers。这样你就不会丢失值并且它被保存在数组中,这就是为什么当你打印数组时你不再得到全 0。 (您之前得到全零的原因是因为您初始化了ints 的数组,但从未给它们赋值,因此Java 默认为0

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多