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

Popular posts from this blog

java - Run spring boot application error: Cannot instantiate interface org.springframework.context.ApplicationListener -

python - pip wont install .WHL files -

Excel VBA "Microsoft Windows Common Controls 6.0 (SP6)" Location Changes -