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
Post a Comment