java.util.scanner - ( Java) When I enter a non-number (NaN) my program loops infinitely where is supposed to exit. -
this question has reply here:
how test see if double equal nan? 7 answersthe code supposed maintain accepting numbers >-10 long come in them. when ready exit come in other number , supposed take mean value of sum of numbers recorded , print value, exit.
when come in non-number (nan) programme loops infinitely , can't figure out how can maintain happening.
program far:
package project1; import java.util.scanner; public class mean { public static void main(string[] args) { system.out.println("enter temperature: "); scanner input = new scanner(system.in); double value=0.0; double sum=0; int i=0; //this infinitely loops when non double value entered. why!?!?!? while(value != double.nan) { value = averagetemperature(input, -10); sum += value; i++; system.out.println("i've been here " + + " time(s)"); if (value == double.nan){ break; } } double mean = sum / i; system.out.println("the average temperature is: " + mean); } public static double averagetemperature(scanner input, double lowesttemp) { double temp = 0.0; if (input.hasnextdouble()) { temp = input.nextdouble(); if(temp >= lowesttemp){ homecoming temp; } else if (temp < lowesttemp) { system.out.println("invalid temperature. please re-enter: "); homecoming averagetemperature(input,lowesttemp); } } homecoming double.nan; } }
by definition, nan
not equal anything, including itself. thus
while(value != double.nan) {
doesn't work you'd expect. utilize double.isnan()
instead.
when come in non-number (nan)...
just clear terminology, "a non-number" , not-a-number not same thing:
a non-number can pretty much anything, e.g. alphanumeric string; a not-a-number (nan) specific ieee 754 floating-point value. java java.util.scanner infinite-loop exit nan
No comments:
Post a Comment