Задача программы - взять целые числа от 1 до 100 и посчитать, сколько раз они встречаются.
Например, введенные пользователем числа: 1 2 2 3 3 25 25 67 98 99 99. Вывод будет:
1 occurs 1 time
2 occurs 2 times
3 occurs 2 times
25 occurs 2 times
67 occurs 1 time
98 occurs 1 time
Проблема
Хотя моя программа успешно посчитает большинство чисел, она не в состоянии сосчитать два 99-х, и если бы я заменил второй на последний 99 на 98, то результат был бы равен 98, но 2 раза это не произойдетсосчитать 99.
Я попытался отладить эту вещь, и я не должен говорить, что он не считает последние числа или числа в массиве, потому что это так, но он выпрыгивает прямо перед тем, как перейти кзаявления if-if.
Кажется, что он выпрыгивает из-за того, что первый оператор if является истинным, и поэтому ему не нужно переходить к другому, и он заканчивается циклом, но выяснение того, как заставить его по-прежнему печатать последнее число, сбивает с толкуя.
Вот код.Проблема заключается в методе LinearSearch ():
import java.util.Scanner;
public class Lab8 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int usernumbers[] = new int[20];
int size = usernumbers.length;
System.out.println("Enter integers between 1 and 100, " + "enter a 0 to end ");
// user populates the array usernumbers
int i = 0;
do {
usernumbers[i] = input.nextInt();
} while (usernumbers[i++] != 0);
// invokes the method to sort the array
arraySort(usernumbers);
System.out.println(java.util.Arrays.toString(usernumbers));
// this invokes the method to search the array for the numbers
linearSearch(usernumbers);
input.close();
}
public static void arraySort(int[] usernumbers) {
// bubblesort for usernumbers[]
int a = usernumbers.length;
for (int i = 0; i < a - 1; i++) {
for (int j = 0; j < a - i - 1; j++) {
if (usernumbers[j] > usernumbers[j + 1]) {
int temp = usernumbers[j];
usernumbers[j] = usernumbers[j + 1];
usernumbers[j + 1] = temp;
}
}
}
}
public static void linearSearch(int[] usernumbers) {
int compare = usernumbers[0];
int count = 0;
for (int i = 0; i < usernumbers.length; i++) {
if (compare == usernumbers[i]) {
count++;
} else {
if (count > 1 && compare != 0) {
System.out.println(compare + " occurs " + count + " times");
}
if (count == 1 && compare != 0) {
System.out.println(compare + " occurs " + count + " time");
}
count = 1;
compare = usernumbers[i];
}
}
}
}