2010-10-14 80 views
0

所以我看了幾個相關的問題,但仍似乎無法找到我的答案(我猜是因爲它是特定的)。我正在嘗試使用Java中的Scanner.useDelimiter方法,並且我無法使它正常工作......這是我的難題....useDelimiter解析逗號,但不是負號

我們應該編寫一個程序,它需要X,Y協調並計算兩點之間的距離。顯然,一個解決方案是分別掃描每個x和y座標,但這對我來說很渺茫。我的計劃是要求用戶輸入座標爲「x,y」,然後使用Scanner.nextInt()方法獲取整數。但是,我必須找到一種方法來忽略「,」,當然,我可以用useDelimiter方法做到這一點。

根據其他線程,我必須瞭解正則表達式(還沒有)放入useDelimiter方法,我已經得到它忽略逗號,但有可能是用戶輸入一個負數作爲一個座標(這在技術上是正確的)。我如何得到useDelimiter忽略逗號,但仍然認識到負號?

這是我第一次在這裏,這裏是我的代碼:

import java.util.Scanner; 
import java.text.DecimalFormat; 

public class PointDistanceXY 
{ 
public static void main(String[] args) 
{ 
    int xCoordinate1, yCoordinate1, xCoordinate2, yCoordinate2; 
    double distance; 

    // Creation of the scanner and decimal format objects 
    Scanner myScan = new Scanner(System.in); 
    DecimalFormat decimal = new DecimalFormat ("0.##"); 
    myScan.useDelimiter("\\s*,?\\s*"); 

    System.out.println("This application will find the distance between two points you specify."); 
    System.out.println(); 

    System.out.print("Enter your first coordinate (format is \"x, y\"): "); 
    xCoordinate1 = myScan.nextInt(); 
    yCoordinate1 = myScan.nextInt(); 

    System.out.print("Enter your second coordinate (format is \"x, y\"): "); 
    xCoordinate2 = myScan.nextInt(); 
    yCoordinate2 = myScan.nextInt(); 
    System.out.println(); 

    // Formula to calculate the distance between two points 
    distance = Math.sqrt(Math.pow((xCoordinate2 - xCoordinate1), 2) + Math.pow((yCoordinate2 - yCoordinate1), 2)); 

    // Output of data 
    System.out.println("The distance between the two points specified is: " + decimal.format(distance)); 
    System.out.println(); 
} 
} 

感謝您的幫助,我期待着幫助其他人下了線!

回答

1

,我認爲它會更容易(和更傳統的命令行式的程序)只要求x和單獨ÿ

例子:

Scanner myScan = new Scanner(System.in); 
System.out.print("Enter your first x coordinate: "); 
xCoordinate1 = Integer.parseInt(myScan.nextLine()); 
yCoordinate1 = Integer.parseInt(myScan.nextLine()); 

但是如果你堅持這樣做既同時使用分隔符可以嘗試使用返回行作爲分隔符而不是「,」,因爲您必須將其分隔兩次記住,一次在x之後,然後在y之後再次分隔。但是,這種方式會讓你回到同樣的結果。問題是,如果您想使用分隔符並同時將其分隔,則需要將其分隔兩次。我建議看一看字符串的.split函數。

另一種方法是使用.split(「,」);功能,其中「,」是您的分隔符。 例如:

Scanner myScan = new Scanner(System.in); 
    System.out.print("Enter your first coordinate (format is \"x, y\"): "); 
    String input = myScan.nextLine(); 
    xCoordinate1 = Integer.parseInt(input.split(", ")[0]); 
    yCoordinate1 = Integer.parseInt(input.split(", ")[1]); 

希望這有助於,享受。

+0

非常感謝您的幫助!我們沒有討論過parseInt和split方法,但是我得到了它的工作!我會進一步研究這些方法,但我感謝您的幫助,它完美地工作。 老實說,分別向用戶提問x和y太容易了,我通過嘗試變得更加困難,學到了一些新的東西。由於我是新人,不能真正投票,但我感謝你花時間來幫助我。 – mmendoza27 2010-10-14 05:57:15