2

希望这对某人来说非常简单,但我似乎无法解决。

尝试使用以下输入:

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));
    }
}
4

1 回答 1

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));
    }
}
于 2013-06-28T02:29:27.400 回答