Tuesday 15 January 2013

java.util.scanner - ( Java) When I enter a non-number (NaN) my program loops infinitely where is supposed to exit. -



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 answers

the 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