Java Scanner next() 扫描空 token

标签 java java.util.scanner

我正在尝试使用扫描仪将 IP 地址(字符串)分成 4 个整数。我使用了分隔符并将模式设置为“。”

next() 文档:

Finds and returns the next complete token from this scanner. A complete token is preceded and followed by input that matches the delimiter pattern. This method may block while waiting for input to scan, even if a previous invocation of hasNext() returned 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个空行。

我打算将 println 替换为:

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

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

最佳答案

The delimiter is a regular expression .

使用

sc.useDelimiter("\\.");

关于Java Scanner next() 扫描空 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50108698/

相关文章:

java - 为什么 for 循环中的 Scanner#nextInt 不断抛出异常?

java - 无法使用 GWT 读取服务器端的属性文件

java - 将 Single 应用于 ObservableSource 并且不要过度读取

java - 如何在 Kotlin 中使用游标加载器

java - 运费计算器漏算

java - 如何使 Scanner.next() 保留最后一个 "\n"?

java - 为什么我的代码不起作用?

java - 打印斐波那契数列的结果

java - 使用 Docx4j 将 DOCX 转换为 PDF 时保留字体

java - 在多行中读取多个整数