如何以(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)
答案 0 :(得分:1)
以下是实现此目的的一种方法概要:
Scanner
对象。next()
方法从中读取下一个标记(下一行)。String
,并将生成的数组保存到String[]
- 例如nums[]
。String[]
中的第一个字符串从第二个字符(索引1,而不是2)解析为int
。您可以使用Integer.valueOf()
和substring(1)
执行此操作。nums[]
数组(索引0)中第二个字符串的第一个字符的子字符串,直到最后一个字符之前的字符。所以substring(0, nums[1].length()-1)
。再次使用Integer.valueOf()
。希望在没有您付出更多努力的情况下,这有助于并且不会完全放弃解决方案。另请注意,您应该处理可能弹出的异常。
答案 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);
}
我在获取子字符串之前修剪了部分,然后在获取子字符串之后修剪部分,这样当在子字符串中忽略括号时,空格也将被删除。无论有多少空白,它似乎适用于所有情况。
样品:
没有空格
Enter a coordinate:
(155,54)
x: 155
y: 54
带空格
Enter a coordinate:
(118, 43)
x: 118
y: 43
有很多空格
Enter a coordinate:
( 155 , 4 )
x: 155
y: 4