2014-02-09 186 views
-1

如何使用(x, y)格式掃描座標?
例如:java掃描座標爲(X,Y)格式

(1, 3) 
(2, 4) 
(4, 1) 
(3, 2) 

我已經試過是這樣的:

String m = input.next(); 
String parts[] = m.split(","); 

String part1 = parts[0]; 
String part2 = parts[1]; 

part1 = part1.substring(1, part1.length()); 
part2 = part2.substring(0, part2.length()-1); 

該代碼工作與(x,y)格式的座標但(x, y)

+5

開始。並告訴我們你的嘗試。 –

+0

掃描儀輸入=新掃描儀(System.in); 我試圖做它像輸入=新掃描儀(System.in).delimiter(「(,)」) 但顯然這是行不通的。 – knrkn

+0

這是一個好的開始。現在開始閱讀掃描儀的東西並解析它。掃描儀和字符串javadoc包含有用的信息。 –

回答

1

這裏不工作的大綱有一種方法可以做到這一點:

  1. 實例化一個Scanner對象。
  2. 使用next()方法從中讀取下一個令牌(下一行)。
  3. 將逗號分隔爲String,並將結果數組保存爲String[] - 例如, nums[]
  4. 對於第一個數字,將String[]中的第一個字符串從第二個字符(在索引1而不是2)開始解析爲int。您可以使用Integer.valueOf()substring(1)來執行此操作。
  5. 對於第二個數字,從nums[]數組(索引0)中的第二個字符串的第一個字符開始,到最後一個字符之前的字符爲止的子字符串。所以substring(0, nums[1].length()-1)。再次使用Integer.valueOf()

希望這會有所幫助,並且不會完全放棄您的解決方案而無需付出更多努力。另外請注意,您應該處理可能彈出的異常。

+0

String m = input.next(); String parts [] = m.split(「,」); String part1 = parts [0]; String part2 = parts [1]; part1 = part1.substring(1,part1.length()); part2 = part2.substring(0,part2.length() - 1); 當輸入被格式化爲(x,y)時,它起作用。但是,當用戶在逗號後留下空格時,會產生數組outoutbounds錯誤。 謝謝你的迴應! – knrkn

+0

是的,你必須用一些額外的邏輯來處理這種情況。祝你好運! –

1

你提到過你可以使用格式(x,y)而不是(x, y),它們之間有空格。我會建議使用.trim()擺脫空間:

public static void main(String args[]) 
{ 
    Scanner input = new Scanner(System.in); 
    System.out.println("Enter a coordinate: "); 

    String coordinate = input.nextLine(); 
    String[] parts = coordinate.split(","); 

    // if input is (x, y) 
    // then parts[0] is "(x" 
    // and parts[1] is " y)" 

    String x = parts[0].trim().substring(1).trim(); 
    String y = parts[1].trim().substring(0, parts[1].trim().length() - 1).trim(); 

    System.out.println("x: " + x + "\ny: " + y); 
} 

我修剪部分之前得到子,然後修剪部分後得到子一樣,所以,當括號在子字符串中被忽略,空格也將被刪除。無論有多少空白,它似乎都適用於所有情況。


樣品:

  1. 沒有空格

    Enter a coordinate: 
    (155,54) 
    x: 155 
    y: 54 
    
  2. 用空格

    Enter a coordinate: 
    (118, 43) 
    x: 118 
    y: 43 
    
  3. 通過定義 「掃描」 了很多空間

    Enter a coordinate: 
    ( 155 , 4 ) 
    x: 155 
    y: 4