我正在做一个分数计算器,我已经掌握了操作的所有代码。
但现在我想创建一个Scanner
,其中String
会将String
转换为2 Integers
(分子和分母)。
用户输入String
应采用以下格式:数字/数字。如果它是别的东西,我会让扫描仪再次出现。
我已经拥有的代码可以处理否定的Integers
,因此-
符号和0
问题会成为问题。
答案 0 :(得分:1)
您始终可以使用String.split()
根据分隔符(在本例中为/
)分割字符串,然后String.trim()
输出并解析它们以获取分子和分母。
答案 1 :(得分:1)
您可以在“/”上拆分字符串,并按以下方式提取分子和分母。
public void scan(String string){
if(string.matches("-{0,1}[0-9]+\\/[0-9]+"){
String[] numbers = string.split("/");
int numerator = Integer.parseInt(numbers[0]);
int denominator = Integer.parseInt(numbers[1]);
}
else{
scan(string);
}
}
答案 2 :(得分:0)
您可以使用带有正则表达式的Pattern,同时强制使用正确的格式化字符串,并使您能够提取Numerator和Dominator:
Pattern inputPattern =
Pattern.compile("\\A(?<numerator>-?\\d+)[ ]*\\/[ ]*(?<denominator>-?\\d+)\\z");
Matcher matcher = inputPattern.matcher(inputString);
if (matcher.matches()) {
//valid inputstring
int numerator = Integer.parseInt(matcher.group("numerator"));
int denominator = Integer.parseInt(matcher.group("denominator"));
} else {
letTheScannerAppearAgain();
}
此处使用的模式包含两个由圆括号(..)
标记的命名组,并用斜杠分隔(转义,因为斜杠在正则表达式\/
中也有意义)
分子/分母可以以减号开头,并且应该包含至少一个数字。斜杠前后的空格是允许的。
答案 3 :(得分:0)
我就是这样:
int fTop, fBottom;
Fraction(String frak) {
fTop = Integer.parseInt(frak.substring(0,frak.indexOf('/')));
fBottom = Integer.parseInt(frak.substring(frak.indexOf('/')+1,frak.length()));
}