From: Booter on 22 Oct 2009 19:42 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 22 Oct 2009 19:54 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 22 Oct 2009 20:19 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 22 Oct 2009 20:26 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 22 Oct 2009 20:27
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. |