作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在完成一项学术作业,一切都正常,但我想知道为什么我的输出将数字按从小到大的顺序排列。
谁能告诉我在我的代码中哪里发生了这种情况?
这是我的代码:
public static void main(String[] args) {
System.out.println("Quenten's Copy");
Scanner input = new Scanner(System.in);
int number[] = new int [1000000]; // initialize first array
int count[] = new int [1000000]; // initialize second array
int temp = 0; // intialize integer to hold for comparison
int i; // intialize loop integer
System.out.print("Enter seven numbers: "); // ask user for input
// first loop - takes in user input
for (i = 0; i < 7; i++) {
number[i] = input.nextInt();
}
// second loop - checks for reoccurance of numbers
for (i = 0; i < number.length; i++) {
temp = number [i];
count [temp]++;
}
// final loop - gives the output of the count
for (i = 1; i < count.length; i++) {
if (count [i] > 0) {
// output statement - tells user each number and how many
// times each number occurs
System.out.printf("Number %d occurs %d times\n", i, count [i]);
}
}
这是输出的副本:
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
正如您所看到的,它在 23 之前列出了 22,等等。我希望它按照输入的顺序打印。
最佳答案
将输入中的 int 分配给数组:
number[i] = input.nextInt();
然后你通过循环对它们进行计数:
for (i = 0; i < number.length; i++) {
temp = number [i];
count [temp]++;
}
如您所见,如果数字 temp
是 12
,您增加 count
的值在索引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);
}
}
您可以按顺序打印它们:
for (Entry<Integer, Integer> entry : count.entrySet()) {
// entry.getKey is the number
// entry.getValue is the occurence
}
关于Java 数组被无意地组织起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50548702/
我是一名优秀的程序员,十分优秀!