我需要编写一个纬度/经度程序,如果用户输入的内容不符合某些参数,则不会将其存储为纬度/经度的一部分。我知道我可以为此任务制作一个Array
或ArrayList
,但是为了简单起见,我只是决定制作一个经度和纬度变量。我的问题是,我可以在不将用户输入分配给另一个变量的情况下进行比较吗?
这是我的代码段:
Scanner run = new Scanner(System.in);
boolean start = true;
double latitude;
double longtitude;
while(start) {
System.out.println("Please enter the latitude:");
if(!(run.nextDouble() < -90 || run.nextDouble() > 180)) { /*checking to
see if the user input meets the restrictions
and can therefore be assigned a variable*/
latitude = run.nextDouble();
}
else {
System.out.println("Incorrect Latitude or Longtitude");
}
答案 0 :(得分:1)
简而言之,不。每次您调用nextDouble()
时,用户将不得不提供新的输入。您需要将它们的输入捕获到一个临时变量中以进行比较,如果通过则将其分配给latitude
。
答案 1 :(得分:1)
在您的示例中,您呼叫run.nextDouble()
三次:
if(!(run.nextDouble() < -90 || run.nextDouble() > 180)) {
latitude = run.nextDouble();
}
在if
语句中两次,然后再次将其分配给latitude
。这意味着,每次您调用它时,它将要求用户提供新的输入。如果要多次使用该值,则需要将其分配给变量。您在while
循环中拥有了所有这些功能,因此,如果您声明一个新变量来保存用户输入,它将很快超出范围,因此这样做没有很多成本:
while(start) {
double temp = run.nextDouble();
System.out.println("Please enter the latitude:");
if(!(temp < -90 || temp > 180)) {
latitude = temp;
}
else {
System.out.println("Incorrect Latitude or Longtitude");
}
} //temp is now out of scope