2014-02-09 3 views
-1

Как сканировать координаты с помощью формата (x, y)?
Например:координаты java scan как (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); Я попытался сделать это, как input = new Scanner (System.in) .delimiter ("(,)") , но, видимо, это не работает. – knrkn

+0

Это хорошее начало. Теперь начните читать материал со сканера и проанализируйте его. Сканер и строка javadoc содержат полезную информацию. –

ответ

1

Вот набросок для одного из способов сделать это:

  1. Создайте объект Scanner.
  2. Прочитайте следующий токен (следующая строка) с помощью метода next().
  3. Разделите прочитанное в String на запятую и сохраните полученный массив в String[] - например. nums[].
  4. Для первого номера проанализируйте первую строку в String[] от 2-го символа (по индексу 1, а не 2) и далее в int. Вы можете использовать Integer.valueOf() и substring(1).
  5. Для второго номера подстрока от 1-го символа второй строки в массиве nums[] (индекс 0) до символа перед последним символом. Итак, substring(0, nums[1].length()-1). Опять же, используйте Integer.valueOf().

Надеюсь, это поможет и не полностью отдает решение без каких-либо дополнительных усилий с вашей стороны. Также обратите внимание, что вы должны обрабатывать исключения, которые могут появиться.

+0

Строка m = input.next(); Струнные детали [] = m.split (","); Строка part1 = parts [0]; String part2 = parts [1]; part1 = part1.substring (1, part1.length()); part2 = part2.substring (0, part2.length() - 1); Когда ввод форматируется как (x, y), он работает. Но когда пользователь оставляет пробел после запятой, он дает ошибку arrayoutofbounds. Спасибо, что ответили! – 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 
    
Смежные вопросы