我正在尝试在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作为输出,但是当我尝试使用“/”时,我什么也得不到。
答案 0 :(得分:4)
原因是因为它仍在等待更多输入。 nextInt()
方法在遇到非数字输入时停止解析,丢弃令牌的其余部分。这一行:
int numerator1 = input.nextInt();
从输入流中读取8
和/
,得到8
的分子,但4
仍在流中。 Scanner
没有看到另一个/
,因此它不知道下一个标记何时结束。它会阻止。
如果您输入另一个/
,那么它将会有效。
Enter the first rational number seperated by '/':
8/4/
12
答案 1 :(得分:2)
您可以使用split
和parseInt
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)
希望有所帮助