java - I can not figure it out -
i have following requirements program:
- write program reads arbitrary number of integers in range 1 50 keyboard , outputs how many of each value read.
- do not output 0 counts.
- prompt user inputs shown in sample run.
- let user enter 0 terminate input.
- any other value outside range 1 50 should error message.
i have done far:
import java.util.scanner; public class countingintegers { public static void main(string[] args) { int[] inputarray = new int[51]; scanner keyboard = new scanner(system.in); int[] frequency = new int[50]; for(int = 0; < inputarray.length; i++) { system.out.println("input: "); inputarray[i] = keyboard.nextint(); if (inputarray[i] > 0 || inputarray[i] <= 50) { ++frequency[inputarray[i]]; } else { break; } } system.out.printf("%s%10s%n", "number", "frequency"); (int number = 1; number < frequency.length; number++) system.out.printf("%6d%10d%n", number, frequency[number]); } } whether goals achieved?
you can using map. if use treemap, inputs sorted. suggest not placing of code in main method. should create public methods within class , create instance of class call methods upon, keeping code in main @ minimum , @ purpose of gathering input.
here example, leveraging maps tracking number of occurrences:
import java.util.scanner; import java.util.*; public class countingintegers{ private int min, max; private map<integer,integer> inputs = new treemap<>(); public countingintegers(int min, int max){ this.min = min; this.max = max; } public void addint(integer value) throws illegalargumentexception{ if(value < min || value > max){ throw new illegalargumentexception(); } if(inputs.containskey(value)){ inputs.put(value, inputs.get(value)+1); } else{ inputs.put(value, 1); } } public void printcounts(){ system.out.printf("%s%10s%n", "number", "frequency:"); system.out.println(inputs); } public static void main(string[] args) { int totalinputs = 50; int numintsloaded = 0; int input = -1; scanner keyboard = new scanner(system.in); countingintegers counter = new countingintegers(1, 50); while(numintsloaded < totalinputs && input != 0){ system.out.println("input number between 1-50, or 0 exit (" + (totalinputs-numintsloaded) + " go):"); try{ input = keyboard.nextint(); counter.addint(input); numintsloaded++; } catch(exception e){ system.out.println("you entered invalid input. please try again!"); keyboard.nextline(); } } counter.printcounts(); } }
Comments
Post a Comment