Java Scanner next()扫描空标记

时间:2018-04-30 21:49:58

标签: java java.util.scanner

我试图使用扫描仪将IP地址(String)拆分为4个整数。我使用了分隔符并将模式设置为"。"

next()文档:

  

查找并返回此扫描仪的下一个完整令牌。在完成令牌之前和之后是与分隔符模式匹配的输入。即使之前的hasNext()调用返回true,此方法也可能在等待输入扫描时阻塞。

我最初尝试使用IP字符串,但最后没有句点,但我现在尝试在字符串的每一端添加句点。扫描仪next()仍然不扫描我的数字(或任何东西)。

public void setIP(String ip){
    IPstring = "."+ip+".";
    Scanner sc = new Scanner(IPstring);
    sc.useDelimiter(".");
    System.out.println(IPstring);
    System.out.println(sc.next());
    System.out.println(sc.next());
    System.out.println(sc.next());
    sc.close();
}

输出:

.216.198.240.0.

注意:.216.198.240.0下有3个空行。

我打算用以下代码替换printlns:

IP1 = Integer.parseInt(sc.next());
IP2 = Integer.parseInt(sc.next());
IP3 = Integer.parseInt(sc.next());
IP4 = Integer.parseInt(sc.next());

IP1-4是表示IP地址的4个部分的整数。

1 个答案:

答案 0 :(得分:3)

The delimiter is a regular expression

使用

sc.useDelimiter("\\.");