java - How to calculate average from command line? Homework excercize -


i have make program calculates average, modal value , median of numbers insert on command line. numbers have in range [1,10] can't understand why stops. wrong? code:

import java.lang.integer; import java.util.arrays;   class stat{     public static void main(string[] args){           int i,median,modalvalue = 0;         float average, sum = 0;         int repetition[] = new int[args.length];         integer allnumbers[] = new integer[args.length];           //check numbers range             try{                  //reading args command line                 for( = 0; < args.length; i++){                     //if not in range --> exception                     if(integer.parseint(args[i]) < 1 || integer.parseint(args[i]) > 10)                         throw new exception("exception: insert number out of range. restart programm.");                  //put numbers in array                 allnumbers[i] = new integer(args[i]);                 }                  //sorting array                 arrays.sort(allnumbers);                  //calculate average                 for( = 0; < allnumbers length; i++ ){                     sum += allnumbers[i];                 }                 average = sum / (i + 1) ;                 system.out.println("average: " + average);                  //calcolate modal value (most frequent number)                 for( = 0; < repetition.length; i++){        //counting numbers occurrences                     repetition[allnumbers[i]]++;                 }                  for( = 1; < repetition.length; i++){        //checking number occurrences                     if(repetition[i] >= repetition[i-1])                         modalvalue = repetition[i];                 }                  system.out.println("modal value: " + modalvalue);                   //calculating median value                 if((allnumbers.length) % 2 == 0){       //even                     median = allnumbers.length/2;,                 }else{                                  //odd                     median = (allnumbers.length/2) + 1;                  }                 system.out.println("median: " + allnumbers[median]);               }catch(exception e) {                   //out of range                 system.out.println(e.getmessage());             }         }  } 

first step

you more information errors if remove try/catch. catching exception , printing out message, missing out on stack trace, tell line error occurs on.

so firstly, remove try/catch, , allow main method throw exceptions changing declaration to: public static void main(string[] args) throws exception {. compile , run again, allow exception crash program.

what type of exception thrown? line number say?

second step

next, let's @ of code helps calculate modal value:

int repetition[] = new int[args.length];  (i = 0; < repetition.length; i++) {     repetition[allnumbers[i]]++; } 

the first line create array same number of elements numbers provided on command line. example, if provide numbers 5 8 9, that's 3 numbers, array have 3 elements. array indexes start @ zero, indexes 0, 1 , 2.

the for loop take first number, allnumbers[0] in example 5, , increment value in array @ index 5. causes exception because array not have index 5. "outside bounds" of array.

the problem here how create repetition array. creating 3 elements not enough. need think how create able handle number in range of [1, 10] given.


Comments

Popular posts from this blog

php - How to display all orders for a single product showing the most recent first? Woocommerce -

asp.net - How to correctly use QUERY_STRING in ISAPI rewrite? -

angularjs - How restrict admin panel using in backend laravel and admin panel on angular? -