From: Booter on
Hello all,

I am working on a program that can takes numbers in as grades with a
delimiter of a ",". I have most of the code working but for some
reason I can never get out of the while loop in the code. If anyone
can help it would be greatly appreciated.

*****************CODE**************

import java.util.*;// need scanner

public class Grades
{
public static void main (String[] args)
{
Scanner classGrades = new Scanner(System.in);
Scanner delimiter = new Scanner(System.in);

System.out.print("Welcome to the Grade Calculator Program \n\n"
+ "Please enter the student scores as integers between 0 and
100.\n"
+ "Separate the scores with a comma.\n"
+ "Follow the last student score with a negative number.\n"
+ "Enter the grades here: ");

//declairations for vars needed
int grade = 0;
int a = 0;
int b = 0;
int c = 0;
int d = 0;
int f = 0;
int total = 0;
int low = 0;
int high = 0;
double avg = 0;
double sum = 0;

//set delimiter to a ","
delimiter.useDelimiter(",");

//while loop to go though the input grades
while (delimiter.hasNextInt())
{
System.out.println(grade);

grade = delimiter.nextInt();

if (grade >= 0)
{
System.out.println("test 2");

//assign low and high
if (grade > high)
high = grade;
else if (grade < low)
low = grade;

// assign grades
if (grade >= 90)
{
a++;
sum = sum + grade;
}
else if (grade >= 80 && grade <= 89)
{
b++;
sum = sum + grade;
}
if (grade >= 70 && grade <= 79)
{
c++;
sum = sum + grade;
}
if (grade >= 60 && grade <= 69)
{
d++;
sum = sum + grade;
}
if (grade < 60)
{
f++;
sum = sum + grade;
}

System.out.println(grade);
total++;

}
else
break;
}

avg = sum / total;

System.out.print("\n\n");
System.out.println("Grade Calculations:");
System.out.println("Total number of grades = " + total);
System.out.println("Low score = " + low);
System.out.println("High score = " + high);
System.out.println("Average score = " + avg);
System.out.println("Number of A's = " + a);
System.out.println("Number of B's = " + b);
System.out.println("Number of C's = " + c);
System.out.println("Number of D's = " + d);
System.out.println("Number of F's = " + f);

}
}
From: Lew on
Booter wrote:
> I am working on a program that can takes numbers in as grades with a
> delimiter of a ",". I have most of the code working but for some
> reason I can never get out of the while loop in the code. If anyone
> can help it would be greatly appreciated.
>
> *****************CODE**************
>
> import java.util.*;// need scanner
>
> public class Grades
> {
> public static void main (String[] args)

Do not embed TAB characters in Usenet posts. Use spaces, a maximum of four
per indent level.

People have to be able to read your code to help you with it.

> {
> Scanner classGrades = new Scanner(System.in);
> Scanner delimiter = new Scanner(System.in);

This is probably your problem. You've declared two scanners for System.in and
you don't seem ever to use the first one. Why do you need two? Why don't you
use the first one?

> System.out.print("Welcome to the Grade Calculator Program \n\n"
> + "Please enter the student scores as integers between 0 and
> 100.\n"

Those darn TAB characters!

> + "Separate the scores with a comma.\n"
> + "Follow the last student score with a negative number.\n"
> + "Enter the grades here: ");
>
> //declairations [sic] for vars needed
> int grade = 0;
> int a = 0;

It is better in languages like Java to name a variable with a whole word that
indicates its meaning in the logic of the problem. Readers have to ask, "What
is an 'a'?" A better name would be "aCount" or "countOfA" or "numberOfAs".

> int b = 0;
> etc.

I took a guess, but for this kind of question you should also report
(copied-and-pasted) what your test inputs and resulting outputs were.

--
Lew
From: Booter on
On Oct 22, 5:54 pm, Lew <no...(a)lewscanon.com> wrote:
> Booter wrote:
> > I am working on a program that can takes numbers in as grades with a
> > delimiter of a ",".  I have most of the code working but for some
> > reason I can never get out of the while loop in the code.  If anyone
> > can help it would be greatly appreciated.
>
> > *****************CODE**************
>
> > import java.util.*;// need scanner
>
> > public class Grades
> > {
> >    public static void main (String[] args)
>
> Do not embed TAB characters in Usenet posts.  Use spaces, a maximum of four
> per indent level.
>
> People have to be able to read your code to help you with it.
>
> >    {
> >            Scanner classGrades = new Scanner(System.in);
> >            Scanner delimiter = new Scanner(System.in);
>
> This is probably your problem.  You've declared two scanners for System..in and
> you don't seem ever to use the first one.  Why do you need two?  Why don't you
> use the first one?
>
> >            System.out.print("Welcome to the Grade Calculator Program \n\n"
> >                            + "Please enter the student scores as integers between 0 and
> > 100.\n"
>
> Those darn TAB characters!
>
> >                            + "Separate the scores with a comma.\n"
> >                            + "Follow the last student score with a negative number.\n"
> >                            + "Enter the grades here: ");
>
> >            //declairations [sic] for vars needed
> >            int grade = 0;
> >            int a = 0;
>
> It is better in languages like Java to name a variable with a whole word that
> indicates its meaning in the logic of the problem.  Readers have to ask, "What
> is an 'a'?"  A better name would be "aCount" or "countOfA" or "numberOfAs".
>
> >            int b = 0;
> > etc.
>
> I took a guess, but for this kind of question you should also report
> (copied-and-pasted) what your test inputs and resulting outputs were.
>
> --
> Lew

I was going through debug mode in Eclipse and noticed that when I got
to a negative number that my line:

grade = delimiter.nextInt();

was not preforming as expected. Does this method get negative
numbers?
From: Lew on
Booter wrote:
> I was going through debug mode in Eclipse and noticed that when I got
> to a negative number that my line:
>
> grade = delimiter.nextInt();
>
> was not preforming as expected. Does this method get negative
> numbers?

How did you expect it to perform?

What input did you give it (I ask again)?

How did it perform?

Is its action not consistent with
<http://java.sun.com/javase/6/docs/api/java/util/Scanner.html#nextInt()>
?

--
Lew
Don't quote sigs.
Like this one.
Do answer the questions people ask when trying to help you.
From: markspace on
Normally, I'd say "do your own homework." It's important to ask your
instructor or TA so they know where you are having trouble. However,
this may be a subtle error.

Booter wrote:

> //set delimiter to a ","
> delimiter.useDelimiter(",");

You might try ",\\s*" instead. Normally there's white space in a file
like this, and I'm not really sure what the response of the scanner will
be if it tries to convert an int with white space. Note that white
space includes newlines, so I don't see how this will progress to a new
line as you have it now. If you have white space before the comma,
you'll need something like "\\s*,\\s*".

I could be all wrong, and I didn't test it, but it's something to look at.