样品输入:1/2 3/4 5/6 7/8 9/10
我期望它做什么:首先根据空格分割字符串,所以最终得到的字符串数组为{1 / 2,3 / 4,5 / 6,6 / 8,9 / 10},并且然后将其拆分为整数数组intA {1,2},intB {3,4},intC {5,6},intD {7,8},intE {9,10},这样我最终可以将它们传递给具有分子和分母的分数对象。
以下是我目前的情况:
public static void main(String[]args)
{
Scanner keyboard = new Scanner(System.in);
String str;
str = keyboard.nextLine();
String[] splitStr = str.split(" ");
Fraction[] input = new Fraction[10];
for(int i = 0; i < splitStr.length; i++)
{
String[] fract = splitStr[i].split("/");
int num = Integer.valueOf(fract[0]);
int den = Integer.valueOf(fract[1]);
double fraction = (double)num / den;
}
for(int i = 0; i < input.length; i++)
{
System.out.println(input[i]);
}
}
当我输入上面的字符串时,我得到空值。如果我输入没有正斜杠的任何值,如下所示:1/2 3/4 5/6 7 8 9/10
而不是将7和8读为7/1和8/1,程序将遇到NullPointerException错误。必须有一种更简单的方法来做到这一点,不是吗?
答案 0 :(得分:4)
我得到空值
这是因为您没有向input
添加任何值,您只会初始化它,这将填充null
值。
我不确定如何创建Fraction
个对象,但您需要创建这种对象并将它们添加到数组中。这是一个例子:
Fraction[] input = new Fraction[10];
for(int i = 0; i < splitStr.length; i++) {
String[] fract = splitStr[i].split("/");
int num = Integer.valueOf(fract[0]);
int den = Integer.valueOf(fract[1]);
input[i] = new Fraction(num, den);
}
如果您想在输入包含单个数字时将denominator
设置为1
,则可以执行以下操作:
for(int i = 0; i < splitStr.length; i++) {
String[] fract = splitStr[i].split("/");
int num = Integer.valueOf(fract[0]);
int den = 1;
if(fract.length == 2){
den = Integer.valueOf(fract[1]);
}
input[i] = new Fraction(num, den);
}
此外,将input
数组的长度设置为等于splitStr
数组的长度更安全。
Fraction[] input = new Fraction[splitStr.length];
答案 1 :(得分:0)
对于没有书房的数字(7 8),您需要检查分形的长度:
String[] fract = splitStr[i].split("/");
int num = Integer.valueOf(fract[0]);
int den = 1
if(fract.length > 2)
den = Integer.valueOf(fract[1]);
答案 2 :(得分:0)
for(int i = 0; i < splitStr.length; i++)
{
// if statement works for 7 or 8
if(splitStr[i].length() == 1){
// do something
} else if(splitStr[i].length() == 3){
String[] fract = splitStr[i].split("/");
int num = Integer.valueOf(fract[0]);
int den = Integer.valueOf(fract[1]);
double fraction = (double)num / den;
}
}
答案 3 :(得分:0)
您可以使用像this.props.params.params
这样的正则表达式来检查字符串是否由分数组成,并相应地管理情况。