java中的分隔符

时间:2015-03-12 19:38:15

标签: java delimiter

我正在尝试在Java中使用分隔符,但它不起作用(标准的空白分隔符正在工作)。

我的代码是:

Scanner input = new Scanner(System.in);

System.out.println("Enter the first rational number seperated by '/':");
input.useDelimiter("/");
int numerator1 = input.nextInt();
int denominator1 = input.nextInt();


System.out.println(numerator1 + denominator1);

当我使用空格分隔符时,我得到12作为输出,但是当我尝试使用“/”时,我什么也得不到。

2 个答案:

答案 0 :(得分:4)

原因是因为它仍在等待更多输入。 nextInt()方法在遇到非数字输入时停止解析,丢弃令牌的其余部分。这一行:

int numerator1 = input.nextInt();

从输入流中读取8/,得到8的分子,但4仍在流中。 Scanner没有看到另一个/,因此它不知道下一个标记何时结束。它会阻止。

如果您输入另一个/,那么它将会有效。

Enter the first rational number seperated by '/':
8/4/
12

答案 1 :(得分:2)

您可以使用splitparseInt

import java.util.*;
import java.io.*;
class delimiter {
    public static void main(String[] args) {
Scanner input = new Scanner(System.in);
    System.out.println("Enter the first rational number seperated by '/':");
    String[] parts = input.nextLine().split("/");
    int numerator1 = Integer.parseInt(parts[0]);
    int denominator1 = Integer.parseInt(parts[1]);


    System.out.println(numerator1 + " " + denominator1);
}
}

输入/输出:

Enter the first rational number seperated by '/':
8/4
8 4

如果您想添加这两个数字,请使用:

 System.out.println(numerator1 + denominator1);

输出12

如果您(或其他人阅读此内容)想要与其他符号分开,您可以使用

       String[] parts = input.nextLine().split("\\+");

如果您想拆分 (8+4) 分为两部分,请用+

分隔
    String[] parts = input.nextLine().split("\\*");

如果您想拆分 (8+4) 分为两部分,请用*

分开

我们需要对\\+使用*,因为这些是special ,正则表达式需要正确处理

您还可以使用您想要分割的任何其他符号 (just change the argument of the split() function and be careful if it is a special character or not)

希望有所帮助