So far I have this:
public double checkValueWithin(int min, int max) {
double num;
Scanner reader = new Scanner(System.in);
num = reader.nextDouble();
while (num < min || num > max) {
System.out.print("Invalid. Re-enter number: ");
num = reader.nextDouble();
}
return num;
}
and this:
public void askForMarks() {
double marks[] = new double[student];
int index = 0;
Scanner reader = new Scanner(System.in);
while (index < student) {
System.out.print("Please enter a mark (0..30): ");
marks[index] = (double) checkValueWithin(0, 30);
index++;
}
}
When I test this, it can’t take double number and I got this message:
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:909)
at java.util.Scanner.next(Scanner.java:1530)
at java.util.Scanner.nextDouble(Scanner.java:2456)
at MarkingSystem.checkValueWithin(MarkingSystem.java:25)
at MarkingSystem.askForMarks(MarkingSystem.java:44)
at World.main(World.java:6)
Java Result: 1
How do I fix this?
Here you can see the nature of Scanner:
Try to catch the exception
UPDATE
CASE 1
I tried your code and there is nothing wrong with it. Your are getting that error because you must have entered
Stringvalue. When I entered a numeric value, it runs without any errors. But once I enteredStringitthrowthe sameExceptionwhich you have mentioned in your question.CASE 2
You have entered something, which is out of range as I have mentioned above.
I’m really wondering what you could have tried to enter. In my system, it is running perfectly without changing a single line of code. Just copy as it is and try to compile and run it.
As you said, you have tried to enter
1.0,2.8and etc. Please try with this code.Note : Please enter number one by one, on separate lines. I mean, enter
2.7, press enter and then enter second number (e.g.6.7).