Programming assignment #4: grada | Computer Science homework help

2

of

2

This program processes user input using a

Scanner

. You should handle the following two special cases of input:

A student can

receive extra credit on an

individual assignment

, but

the total points for homework are capped at the

maximum

possible

. For example,

a student

who

earns

4

1

/

4

0,

3

9

/

4

0, and

4

7

/

4

0 on three assignments

, and

25

/

3

0

on

section

attendance

will

receive

150

homework points (the max) even though they earned

15

2

.

Sections points ar

e capped at

3

0.

Cap exam scores at 100.

If the raw or shifted exam score exceeds 100, a score of 100 is used.

Otherwise, you may assume the user enters

valid input

. When prompted for a value, the user will enter an integ

er in the

proper range. The user will enter a number of homework assignments

1, and the sum of the three weights will be exactly

100. The weight of each category will be a non

negative number. Exam shifts will be

0.

Development Strategy and Hints:

T

ackle parts of the program (midterm, homework, final exam) one at a time, rather than writing the entire program at

once. Write a bit of code, get it to compile, and test what you have so far. If you try to write large amounts of code

without attempting

to compile it, you may encounter a large list of compiler errors and/or bugs.

To compute homework scores, you will need to cumulatively sum not only the total points the student has earned, but

also the total points possible on all homework assignments. S

ee textbook section 4.2 about cumulative sums.

The homework part reads two values on one line from the

Scanner

. See the lecture slides for an example of this.

Many students get “cannot find symbol” compiler errors. Common mistakes include forgetting to p

ass / return a

needed value, forgetting to store a returned value into a variable, and referring to a variable by the wrong name.

All weighted scores and grades are printed with no more than 1 digit after the decimal point. Achieve this with a

custom meth

od or

System.out.printf

. The following code prints variable

x

rounded to the nearest tenth:

double x = 1.2345;

System.out.printf(“x is around

%.1f

in size.

n”, x); // 1.2

If you are getting scores of 0 regardless of what data the user types, you may have

a problem with integer division.

See Chapter 2 about types

int

and

double

, type

casting, and how to avoid integer division problems. If you have a

value of type

double

but need to convert it into an

int

, use a type

cast such as the following:

double d =

5.678;

int i = (int) d; // 5

Use

Math.max

and

Math.min

to constrain numbers to within a particular bound.

Style Guidelines:

For this assignment, you are limited to Java features from Ch. 1

4. A major part of this assignment is demonstrating that you

un

derstand parameters and return values. Use static methods, parameters, and returns for structure and to eliminate

redundancy. For full credit, use

at least 4 non

trivial methods

other than

main

. For reference, our solution is roughly 110

lines long (66

“substantive”), with 6 methods other than

main

, though you do not need to match this.

Like on previous assignments, you should not have

println

statements in your

main

method. Also,

main

should be a concise

summary of the overall program; main should make

calls to several of your other methods that implement the majority of the

program’s behavior. Your methods will need to make appropriate use of parameters and return values. Each method should

perform a coherent task and should not do too large a share

of the overall work. Avoid lengthy “chaining” of method calls,

where each method calls the next, no values are returned, and control does not come back to

main

. (See textbook Chapter 4’s

case study for a discussion of well

designed versus poorly designed

methods.)

This document describes several numbers that are important to the overall program. For full credit,

you should make at least

one of such numbers into a class constant

so that the constant could be changed and your program would adapt.

When hand

ling numeric data, you are expected to choose appropriately between types

int

and

double

. You will lose points

if you use type

double

for variables in cases where type

int

would be more appropriate.

Some of your code will use conditional execution with

if

and

if/else

statements. Part of your grade will come from using

these statements properly. Review book sections 4.1

4.3 about nested

if/else

statements and factoring them.

Give meaningful names to methods and variables, and use proper indentation and

whitespace. Follow Java’s naming standards

as specified in Chapter 1. Localize variables when possible; declare them in the smallest scope needed. Include meaningful

comment headers at the top of your program and at the start of each method. Limit line

lengths to 100 chars.