这是我的情况:
我需要代码在循环中运行,一遍又一遍地向用户询问相同的问题,直到用户为任何点键入“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);
}
}'
答案 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
}
}