如何在Java中读取逗号分隔的整数输入

7
import java.io.*;
import java.util.*;
class usingDelimiters
{
    public static void main(String args[])
    {
        Scanner dis=new Scanner(System.in);
        int a,b,c;
        a=dis.nextInt();
        b=dis.nextInt();
        c=dis.nextInt();
        System.out.println("a="+a);
        System.out.println("b="+b);
        System.out.println("c="+c);
    }
}

当我的输入是1 2 3(以空格分隔)时,这个程序运行得很好。 但是,当我的输入是1,2,3(以逗号分隔)时,该如何修改我的程序呢?


逗号分隔的整数 == 逗号分隔的值 == CSV == 使用OpenCSV?如果是玩具代码,手动处理也可以,但对于严肃的工作,请考虑使用OpenCSV。 - fge
2个回答

19

你可以使用分隔符来处理非数字项,分隔符将标记任何非数字字符。

例如:

dis.useDelimiter("\\D");
useDelimiter 方法接受一个 PatternPattern 的字符串表示。
完整示例:
Scanner dis=new Scanner(System.in);
dis.useDelimiter("\\D");
int a,b,c;
a=dis.nextInt();
b=dis.nextInt();
c=dis.nextInt();
System.out.println(a + " " + b + " " + c);
dis.close();

输入(两者之一)

  • 1,2,3
  • 1 2 3

输出

1 2 3

注意

  • 不要忘记关闭你的Scanner
  • 查看API文档,了解如何使用Pattern来更有趣地划分输入。

11

您可以使用nextLine方法读取一个字符串,并使用split方法以逗号分隔,像这样:

public static void main(String args[])
    {
        Scanner dis=new Scanner(System.in);
        int a,b,c;
        String line;
        String[] lineVector;

        line = dis.nextLine(); //read 1,2,3

        //separate all values by comma
        lineVector = line.split(",");

        //parsing the values to Integer
        a=Integer.parseInt(lineVector[0]);
        b=Integer.parseInt(lineVector[1]);
        c=Integer.parseInt(lineVector[2]);

        System.out.println("a="+a);
        System.out.println("b="+b);
        System.out.println("c="+c);
    }

此方法仅适用于由逗号分隔的3个值。

如果您需要更改值的数量,可以使用循环从向量中获取这些值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接