This week's book giveaway is in the Mac OS forum.
We're giving away four copies of a choice of "Take Control of Upgrading to Yosemite" or "Take Control of Automating Your Mac" and have Joe Kissell on-line!
See this thread for details.
The moose likes Beginning Java and the fly likes How to store ten scores in an array? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


JavaRanch » Java Forums » Java » Beginning Java
Bookmark "How to store ten scores in an array?" Watch "How to store ten scores in an array?" New topic
Author

How to store ten scores in an array?

dave hen
Greenhorn

Joined: Mar 05, 2008
Posts: 6
Hello,

I hope someone can help me. I had to do the following assignment( i have most of it done just cant finish it off, question and source code below).

Question?
Write a Java program that asks the user to input the scores, as a percentage( e.g 87.4), of 10 students. The scores entered must be stored ina n array.

The programme must determine:

The lowest score and its equivalent grade (ie A,B,etc)
The highest " " " " "
The average score and its "

The bit i cant do is tie in the equivalent grade with the lowest highest and average score.

Code:

//Arrayofscores.java
//This programme asks the user to enter 5 exam scores and store them in an array
import java.text.*;

public class Arrayofscores
{
public static void main(String args[])
{
int [] scores = new int[10];
int smallest, highest,temp,total=0;
double average =0.0;

//ask the user to enter 10 scores
for (int i = 0;i<= scores.length-1;i++)
{
System.out.print("\n\nEnter Score " + (i+1) + ": ");
scores[i] = UserInput.getInt();
}

//find the lowest score
smallest = scores[0];

for (int i = 1; i <= scores.length-1;i++)
if (scores[i] < smallest)
smallest = scores[i];

System.out.println("\nThe lowest score is : " + smallest);

//find the highest score
highest = scores[0];

for (int i = 1; i <= scores.length-1;i++)
if (scores[i] > highest)
highest = scores[i];

System.out.println("\nThe highest score is : " + highest);

//find the average score
for (int i = 0; i<=scores.length-1;i++)
total = total + scores[i];

average = total/10.0;
System.out.println("\nThe average score is : " + average);

}

}


Any suggestions would be greatly appreciated!!
Joanne Neal
Rancher

Joined: Aug 05, 2005
Posts: 3606
    
  15


Joanne
dave hen
Greenhorn

Joined: Mar 05, 2008
Posts: 6
thanks,

I kinda already know the code if else if but what im not too sure about is where i actually tie the if/else into the code.

At the moment with the code i have, it will execute- 1 highest mark is 2- lowest mark is and average mark. what im trying to get it to say is
the highest mark is ? This is a ? grade
the lowest mark is? This is a ? grade

How do i do this,i dont think by just inserting the code above will it execute what i want.
fred rosenberger
lowercase baba
Bartender

Joined: Oct 02, 2003
Posts: 11356
    
  16

I would create a method name getGrade() that takes an int (or float), and returns a string.

put the code Joanne hinted at in the method. then, you could do



There are only two hard things in computer science: cache invalidation, naming things, and off-by-one errors
dave hen
Greenhorn

Joined: Mar 05, 2008
Posts: 6
ok,this what i came up with but still a little unsure and going wrong somewhere:

code:

public static float getGrade()
{
float grade;

if (score > 90)
grade = "A";
else if (score > 75)
grade = "B";

System.out.println("\nThis is a " + getGrade(highest) + " grade.");

return grade;
fred rosenberger
lowercase baba
Bartender

Joined: Oct 02, 2003
Posts: 11356
    
  16

hmmm...

I think you need to slow down a little. What you wrote here will cause some problems.

in your 'getGrade' method, you print some stuff - that's fine. but... you also call a funtion - the getGrade() one. In other words, the method calls itself. So, the method gets called the first time, and then calls itself.

THAT call starts going, and calls itself again.
THAT call starts going, and calls itself again.
THAT call starts going, and calls itself again.
THAT call starts going, and calls itself again...

you see the problem?
dave hen
Greenhorn

Joined: Mar 05, 2008
Posts: 6
thanks fred for your reply but im sorry im lost,looked over my notes and i just cant get my head around writing methods besides main method,so fustrating. what exactly should the grade method code look like.
Robert Hill
Ranch Hand

Joined: Feb 24, 2006
Posts: 94
Originally posted by fred rosenberger:
hmmm...

I think you need to slow down a little. What you wrote here will cause some problems.

in your 'getGrade' method, you print some stuff - that's fine. but... you also call a funtion - the getGrade() one. In other words, the method calls itself. So, the method gets called the first time, and then calls itself.

THAT call starts going, and calls itself again.
THAT call starts going, and calls itself again.
THAT call starts going, and calls itself again.
THAT call starts going, and calls itself again...

you see the problem?



public static float getGrade()
{
float grade;

if (score > 90)
grade = "A";
else if (score > 75)
grade = "B";

System.out.println("\nThis is a " + getGrade(highest) + " grade.");


getGrade() and getGrade(int) are two different methods. No recursion here.
dave hen
Greenhorn

Joined: Mar 05, 2008
Posts: 6
ok so what exactly should it look like,if this isnt the right code,can someone give me the right code.


[ March 05, 2008: Message edited by: dave hen ]
Joanne Neal
Rancher

Joined: Aug 05, 2005
Posts: 3606
    
  15
Originally posted by dave hen:
ok so what exactly should it look like,if this isnt the right code,can someone give me the right code.



[ March 05, 2008: Message edited by: dave hen ]


You don't need to call the getGrade() method in your print statement. You've just set a variable (grade) in your if/else statement. Use this variable in your print statement
 
GeeCON Prague 2014
 
subject: How to store ten scores in an array?