2010-10-18 81 views
3

这是我的情况:循环距离,并退出

我需要的代码在一个循环中运行,一遍又一遍的问同样的问题(一个或多个)用户,直到用户键入任意点的“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); 
    } 
}' 
+2

最后一门功课的问题在用户实际尝试:) – 2010-10-18 20:47:55

+1

你知道'!'操作符吗? – nmichaels 2010-10-18 20:48:02

回答

1

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

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

这种方法需要每个用户提供输入的时间被称为:

if (timeToExit(line)) break; 

这将退出循环。

现在,由于您有double的字符串表示,因此您需要使用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); 
    ... 
} 
+0

谢谢,它的工作原理。我还必须将getSoulition变量更改为parseDouble ...以及圣洁!我需要更多练习。我知道解析概念,从来没有意识到它。 – 2010-10-19 19:12:34

+0

@carlos,很高兴我能帮上忙,并且很高兴你能工作。 – jjnguy 2010-10-19 19:29:03

1

只是一些伪代码:

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

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

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

+0

我不是一个java程序员,但应该允许你循环直到用户键入'q' – 2010-10-18 20:52:54

+0

需要做更多更改才能完成这项工作。 – jjnguy 2010-10-18 20:53:31

+1

嗯,我不擅长java,所以我试图保持它有点语言独立:(什么会改变,使其工作?只是好奇!谢谢!编辑:啊,我明白了......数字到字符串转换部分? – 2010-10-18 21:00:17

0

我没有看到你的代码的循环...:■

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

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 
    } 
} 
+0

如果用户输入一个数字,此解决方案将错过输入。 – jjnguy 2010-10-18 20:57:06