java扫描坐标为(X,Y)格式

时间:2014-02-09 22:27:29

标签: java java.util.scanner

如何以(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)

2 个答案:

答案 0 :(得分: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()
  6. 希望在没有您付出更多努力的情况下,这有助于并且不会完全放弃解决方案。另请注意,您应该处理可能弹出的异常。

答案 1 :(得分: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