是否可以在不将用户输入分配给变量的情况下进行比较?

时间:2018-10-15 18:14:21

标签: java java.util.scanner

我需要编写一个纬度/经度程序,如果用户输入的内容不符合某些参数,则不会将其存储为纬度/经度的一部分。我知道我可以为此任务制作一个ArrayArrayList,但是为了简单起见,我只是决定制作一个经度和纬度变量。我的问题是,我可以在不将用户输入分配给另一个变量的情况下进行比较吗? 这是我的代码段:

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");
   }

2 个答案:

答案 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