Java数组无意中组织起来

时间:2018-05-27 03:11:28

标签: java arrays organization

我正在从事一项学术任务,我已经完成了所有工作,但我想知道为什么我的输出按顺序从最小到最大。

有谁能告诉我我的代码中发生了什么?

这是我的代码:

Enter seven numbers: 12 23 44 22 23 22 55
Number 12 occurs 1 times
Number 22 occurs 2 times
Number 23 occurs 2 times
Number 44 occurs 1 times
Number 55 occurs 1 times

以下是输出的副本:

AS

正如你可以看到它在23之前列出22等等。我希望它按照输入的顺序打印。

2 个答案:

答案 0 :(得分:1)

您可以将输入中的int分配给数组:

number[i] = input.nextInt();

然后你通过循环计算它们:

for (i = 0; i < number.length; i++) {
    temp = number [i];
    count [temp]++;
}

如您所见,如果数字temp12,则会将索引count的{​​{1}}值增加一。

基本上,12

因此,当您打印count[i] = number of occurrence of number i数组时,您会按自然顺序看到它们。

如果您想按照订单顺序打印商品,建议您使用count存储相关商品:

Map

您可以按顺序打印它们:

Map<Integer, Integer> count = new LinkedHashMap<>(); // LinkedHashMap remember the insert order

for (i = 0; i < number.length; i++) {
    temp = number [i];
    if (count.contains(temp)) {
        count.put(temp, count.get(temp) + 1);
    } else {
        count.put(temp, 1);
    }
}

答案 1 :(得分:1)

首先,2个循环将是近似无限循环(1000000次)。经济实惠。

 // second loop - checks for reoccurance of numbers
for (i = 0; i < number.length; i++) {
   System.out.println("app. infinity loop");
}

// final loop - gives the output of the count (also app. infinity)
  for (i = 1; i < count.length; i++) {
      System.out.println("app infinity loop");
 }

我认为这将是最好的答案(就像@Manh Quyet一样)

public static void main(String[] args) {

    System.out.println("Quenten's Copy");
    Scanner input = new Scanner(System.in);

    int number[] = new int[7]; // initialize first array
    HashMap<Integer, Integer> map = new LinkedHashMap<>();
    System.out.print("Enter seven numbers: "); // ask user for input

    // first loop - takes in user input
    for (int i = 0; i < 7; i++) {
        number[i] = input.nextInt();
    }

    // second loop - checks for reoccurance of numbers
    for (int i = 0; i < number.length; i++) {
        int key = number[i];
        if (map.containsKey(key)) {
            map.put(key, map.get(key) + 1);
        } else {
            map.put(key, 1);
        }
    }

    // final loop - gives the output of the count
    for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
        Integer key = entry.getKey();
        Integer value = entry.getValue();
        System.out.printf("Number %d occurs %d times\n", key, value);
    }
}