**7.3 (Count occurrence of numbers) Write a program that reads the integers between 1 and 100 and counts the occurrences of each. Assume the input ends with 0. Here is a sample run of the program:
Enter the integers between 1 and 100: 2 5 6 5 4 3 23 43 2 0
2 occurs 2 times
3 occurs 1 time
4 occurs 1 time
5 occurs 2 times
6 occurs 1 time
23 occurs 1 time
43 occurs 1 time
Note that if a number occurs more than one time, the plural word “times” is used in the output.
Enter the integers between 1 and 100: 2 5 6 5 4 3 23 43 2 0
2 occurs 2 times
3 occurs 1 time
4 occurs 1 time
5 occurs 2 times
6 occurs 1 time
23 occurs 1 time
43 occurs 1 time
Note that if a number occurs more than one time, the plural word “times” is used in the output.
import java.util.Scanner; public class ProgrammingEx7_3 { public static void main(String[] args) { Scanner input = new Scanner(System.in); int[] numbers = new int[0]; int number; System.out.print("Enter the integers between 1 and 100:"); // Take inputs and increase array size to accept more input until the // input is 0 while ((number = input.nextInt()) != 0) { numbers = add2Array(numbers, number); } int searchNumber = 0, searchCount = 0; // going through the array for (int j = 0; j < numbers.length; j++) { // Define new search term if needed if (searchNumber != numbers[j] && numbers[j] != 0) { searchNumber = numbers[j]; // Search the array for the new terms starting from position of // the new term to the end for (int i = j; i < numbers.length; i++) { if (searchNumber == numbers[i]) { searchCount++; numbers[i] = 0; // reset the found counted item to zero // so it would not be seen again in the // outer loop } } System.out.print(searchNumber + " occurs " + searchCount + " time"); if (searchCount > 1) { System.out.println("s"); } else { System.out.println(); } searchCount = 0; } } } // Copy array numbers1 to array numbers2 // If the length of array numbers2 is less then array numbers2, return false public static boolean copyArray(int[] source, int[] dest) { if (source.length > dest.length) return false; for (int i = 0; i < source.length; i++) { dest[i] = source[i]; } return true; } // Increase array size by one and add integer to the end of array // Return new array public static int[] add2Array(int[] source, int data) { int[] dest = new int[source.length + 1]; copyArray(source, dest); dest[source.length] = data; return dest; } }
thank you for this pretty answer
ReplyDelete