Assignment #1

Suppose the following list represents the number of rocks inside jars in a laboratory (each integer

represents the number of rocks in a single jar):

4 87 118 150 193

21 93 119 160 207

30 111 125 176 214

80 112 130 184 241

83 113 143 191 243

If we only take a look at the leading digit of each of these numbers (highlighted in the list

above), one at a time, we can generate the following table that represents the frequency of each

leading digit and its percentage (of the total number of integers/jars):

——————————–

Leading Digit Count %

——————————–

0 0 0.00%

1 14 56.00%

2 5 20.00%

3 1 4.00%

4 1 4.00%

5 0 0.00%

6 0 0.00%

7 0 0.00%

8 3 12.00%

9 1 4.00%

——————————–

TOTAL 25 100.00%

================================

Your task:

Write a Java program that takes as input some arbitrary number of integers and generates a table

like the one above that is representative of that set of integers (although there’s no need to bold

the top and bottom rows). I will provide several sets of integers, each set in a single file. You

will submit your single .java source file. You will also be prepared to discuss, in class (after the

assignment is due), any observations that you make with respect to the results (i.e., what you

observe in the table data).

Requirements:

(1) You will submit only a single .java source file.

(2) You must read the input from standard input (stdin).

(3) You must display the table exactly as mine is displayed in terms of content and

formatting.

(a) Clearly, the table header will be exactly the same as in the table above.(b) Clearly, the actual values in columns two and three will be different (for different

input data).

(c) Clearly, the values in the first column will be the same.

(d) Clearly, the values in the bottom row will be similar (the only difference should be

the total value for the Count column for different input data).

Notes:

(1) You may not understand everything that has been written in this document so far.

(2) You will most likely not know how to entirely solve this problem.

(3) You probably do not have all of the knowledge needed to finish the assignment right now,

but I trust that you will be able to figure it out with your teammate before it is due.

(4) You most certainly won’t find this problem on the Internet (and therefore won’t be able to

copy a video or some snippet of code from someone who has already solved the

problem).

(5) But you can Google the things that you do not know how to do:

(a) How to read from standard input in Java.

(b) How to read the input as integers.

(c) How to identify the leading digit of an integer.

(d) How to calculate the percentage.

(e) How format the output so that it is aligned.

(f) How to format a floating point number in the output (table) so that it has only two

digits to the right of the decimal point.

(g) How to display a set of floating point numbers so that they are aligned on the decimal

point.

The point:

(1) You need to learn how to code without relying on videos or snippets of code showing you

how to solve the entire problem (i.e., from someone who has already solved the problem).

(2) You need to know how to Google for tidbits that can help with issues related to small

tasks (e.g., how do I read from standard input in Java?).

(a) Which is related to learning how to properly structure a question so that it returns the

best set of answers.

(3) You need to think through the problem before you get your hands on the keyboard in

order to figure out how to solve it at a high level.

Sale!