两点之间的循环距离,q为退出

时间:2010-10-18 20:44:13

标签: java loops

这是我的情况:

我需要代码在循环中运行,一遍又一遍地向用户询问相同的问题,直到用户为任何点键入“q”来终止/退出循环,从而退出程序

问题是我尝试使用do-while / while循环,并且只有在条件成立时才会执行这些循环。但我需要条件(“q”)为假,因此它可以继续循环。如果条件为真(input.equals(“q”)),那么它就不会有任何结果,因为它将使用字符串(“q”)来计算距离。

我已经想出了如何获得距离,代码运行良好,但有没有解决方法,我可以在条件为假时继续循环?

顺便说一句,我刚刚学习java以防万一...

”。

import java.*;
public class Points {
public static void main(String[] args){

    java.util.Scanner input = new java.util.Scanner(System.in);

    System.out.print("Enter the first X coordinate: ");
    double x1 = input.nextDouble();
    System.out.print("Enter the first Y coordinate: ");
    double y1 = input.nextDouble();
    System.out.print("Enter the second X coordinate: ");
    double x2 = input.nextDouble();
    System.out.print("Enter the second Y coordinate: ");
    double y2 = input.nextDouble();
    System.out.println("(" + x1 + ", " + y1  + ")" + " " + "(" + x2 + ", " + y2+ ")");

    double getSolution = Math.sqrt(((x2-x1) * (x2-x1)) + ((y2-y1) * (y2-y1)));
    System.out.println(getSolution);
    }
}'

3 个答案:

答案 0 :(得分:1)

解决方法是使用String line = input.nextLine()代替nextDouble()。然后你可以有一个方法:

public static boolean timeToExit(String input) {
    return input.equalsIgnoreCase("q");
}

每次用户提供输入时都需要调用此方法:

if (timeToExit(line)) break;

那将退出循环。

现在,由于您有双精度表的String表示形式,因此需要使用Double.parseDouble(line)将String转换为数字。

然后你所要做的就是将所有东西都包含在一个无限循环中 - > while(true) { }

而且,它唯一一次退出循环就是timeToExit方法返回true,并且你打破了循环。

这一切都变成了:

while (true) {
    ...
    System.out.print("Enter the first X coordinate: ");
    String x1 = input.nextLine();
    if (timeToExit(x1)) break;
    double x1_d = Double.parseDouble(x1);
    ...
}

答案 1 :(得分:1)

只是一些伪代码:

while (! input.equals("q") )
// do something

如果用户输入q,则input.equals(“q”)返回true,然后否定并打破循环。

否则,用户输入另一个数字44,input.equals(“q”)等于false,否则循环继续。

答案 2 :(得分:0)

我的代码中没有看到循环...:s

但是,你为什么不试试这个:

while(true)
{
  string input = // I don't remember the code to create a stream for standard input
  if(input == "q"){
    break;
  }
  else{
    java.util.Scanner inputWithNumbers = new java.util.Scanner(input);
    //---! All math operations here
  }
}