2013-06-28 7 views
2

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

Попытка использовать вход:

addperson jsmith,john,smith 

До сих пор я использовал два Scanner объектов с различными разделителями, но я не могу заставить его работать.
Я не хочу сканировать целую строку и разделять строку.

import java.util.Scanner; 
import java.util.ArrayList; 
public class Delim 
{ 
    public static void main(String[] args) 
    { 
     ArrayList<String> list = new ArrayList<String>(); 
     Scanner input = new Scanner(System.in); 
     Scanner inputCommand = new Scanner(System.in); 
     input.useDelimiter(","); 
     inputCommand.useDelimiter(" "); 
     System.out.println("Enter a username: (format username,name, surname)"); 
     list.add(inputCommand.next());    
     list.add(input.next()); 
     list.add(input.next()); 
     list.add(input.next()); 
     System.out.println("//debug: command " + list.get(0)); 
     printName(list); 


    } 

    static void printName(ArrayList arr) 
    { 
     System.out.println("username: " + arr.get(1) + "\nname: " + arr.get(2) + "\nsurname: " + arr.get(3)); 
    } 
} 
+2

'Я не хочу, чтобы сканировать всю линию и сплит string.' Почему нет? – Doorknob

+0

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

+2

Это намного более грязно, чем 'split'. – Doorknob

ответ

3

Вы можете использовать один сканер с пользовательским разделителем:

input.useDelimiter("[,\\s]"); 

Это делает разделитель либо запятую или пробел символов.

Таким образом, ваша общая программа будет:

import java.util.Scanner; 
import java.util.ArrayList; 
public class Delim 
{ 
    public static void main(String[] args) 
    { 
     ArrayList<String> list = new ArrayList<String>(); 
     Scanner input = new Scanner(System.in); 
     input.useDelimiter("[,\\s]"); 
     System.out.println("Enter a username: (format username,name,surname)"); 
     list.add(input.next());    
     list.add(input.next()); 
     list.add(input.next()); 
     list.add(input.next()); 
     System.out.println(list); 
     System.out.println("//debug: command " + list.get(0)); 
     printName(list); 


    } 

    static void printName(ArrayList arr) 
    { 
     System.out.println("username: " + arr.get(1) + "\nname: " + arr.get(2) + "\nsurname: " + arr.get(3)); 
    } 
} 
+0

Очевидно, можно удалить inputCommand. –

+0

@GlenBest Спасибо. (Но разве это не хорошая практика кодирования, чтобы оставить устаревшие и несуществующие переменные, все еще объявленные?!? ': P') – apnorton

+0

@ anorton вам кровавая легенда! Я работаю так, как хочу. – oCodaa