Homework – Topic 5 – Bowling Scores: Write a complete Java program to do the fol
ID: 3727884 • Letter: H
Question
Homework – Topic 5 – Bowling Scores:
Write a complete Java program to do the following: The main program
reads in and prints three bowling scores, score1, score2, and score3. It
then calls a series of methods to process these scores.
The main program calls a method validgroup() to determine if this
set of three values forms a valid group. The method validgroup()
receives four parameters (the 3 scores and a file object). For the group
to be valid, each number must be in the range from 0 to 300 (the
possible scores in a bowling game). If the group is valid, the method
prints a message saying so. If one or more of the numbers is negative
or greater than 300, the method prints an overall message that the group
is invalid. In addition, for each invalid value, the method prints the
score and a message why the score is invalid. The method returns a
boolean value (true or false) as a signal indicating the validity of the
group. (Hint: use six “if” statements.)
If the group is not valid, the main program skips processing and
simply goes on to the next group of three scores.
If the group is valid, the main program calls a method
onegamescore(), sending it two parameters, the value score1 and a file
object. This score is an integer from 0 to 300 (how can we be sure of
this?). The method converts the score into a rating, using the
following system: 250 to 300 is a professional game; 200 to 249 is an
excellent game; 140 to 199 is a very good game; 100 to 139 is a good
game; 50 to 99 is a poor game; below 50 is a horrible game. The method
prints a message with the original score and the bowler's rating. Then
the main program repeats this process for score2 and score3.
Next the main program calls a method avg3scores(), sending it three
parameters: the three scores. The method avg3scores() finds the average
(as an integer) of the three scores and sends it back. The main program
prints the average. Finally, the main program calls onegamescore()
again, sending it the resulting average from the method avg3scores().
The main program then prints three blank lines.
Then the main program goes on to the next group of three values.
When the main program runs out of groups (hint: use a sentinel), it
prints the final values of three counters it has been keeping track of:
the total number of groups processed, the number of valid groups, and
the number of invalid groups.
I WANT THE Output must be file directed.
Note:
Output must be file directed.
Do not send prompts to the output file.
Do not use global file objects.
File objects should be declared in main()
and passed to methods as needed.
Explanation / Answer
// output will eb available in output.txt
// GroupScorejava
import java.io.File;
import java.util.Scanner;
import java.io.*;
public class GroupScore {
public static void main(String[] args) throws IOException{
int score1,score2, score3,avg;
int ch;
File f = new File("output.txt"); //file object
FileWriter out = new FileWriter("output.txt");
Scanner sc=new Scanner(System.in); //scanner function
//get score from user
do{
System.out.println("Enter Score1: ");
score1=sc.nextInt();
System.out.println("Enter Score2: ");
score2=sc.nextInt();
System.out.println("Enter Score3: ");
score3=sc.nextInt();
out.write(score1);
out.write(" ");
out.write(score2);
out.write(" ");
out.write(score3);
out.write(" ");
if(validgroup(score1,score2,score3,f)==false) //check for validation
return ;
//call the rating function
onegamescore(score1);
onegamescore(score2);
onegamescore(score3);
System.out.println(" Average Score: "); //for average
avg=avg3scores(score1,score2,score3); //call average function
onegamescore(avg);
out.write(" Average Score: ");
out.write(avg);
System.out.println("To stop enter 999, to continue enter any key: ");
ch=sc.nextInt();
}while(ch!=999);
out.close();
System.out.println("Output written to output.txt. Please check file and confirm ");
}
//check for validation
static boolean validgroup(int score1,int score2, int score3,File f)
{
if(score1<0){
System.out.println("Score 1 is less than 0");
return false;
}
if(score2<0){
System.out.println("Score 2 is less than 0");
return false;
}
if(score3<0){
System.out.println("Score 3 is less than 0");
return false;
}
if(score1>300){
System.out.println("Score 1 is greater than 300");
return false;
}
if(score2>300){
System.out.println("Score 2 is greater than 300");
return false;
}
if(score3>300){
System.out.println("Score 3 is greater than 300");
return false;
}
return true;
}
//print the rating
static void onegamescore(int score)
{
if(score >=250 && score<=300)
System.out.println(score +" professional game");
if(score >=200 && score<=249)
System.out.println(score +" excellent game");
if(score >=140 && score<=199)
System.out.println(score +" very good game");
if(score >=100 && score<=139)
System.out.println(score +" good game");
if(score >=50 && score<=99)
System.out.println (score +" poor game");
if(score <50)
System.out.println(score +" Horrible game");
}
//caluclate the average and return
static int avg3scores(int score1,int score2, int score3)
{
return (score1+score2+ score3)/3;
}
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.