还是Java分数

还是Java分数,java,fractions,integer-division,Java,Fractions,Integer Division,昨天,我试着用一种方法来做这件事……今天我试着用另一种方法,但我仍然被卡住了。我必须找到一种使用整数除法和mod的方法。下面是我的代码,后面是错误消息 public int evaluateFraction(int w, int n, int d) throws NumberFormatException { whole = w; numerator = n; denominator = d; return portion2; } 测试员 inp

昨天,我试着用一种方法来做这件事……今天我试着用另一种方法,但我仍然被卡住了。我必须找到一种使用整数除法和mod的方法。下面是我的代码,后面是错误消息

public int evaluateFraction(int w, int n, int d)
    throws NumberFormatException
{
    whole = w;
    numerator = n;
    denominator = d;
    return portion2;
}
测试员

    input = JOptionPane.showInputDialog("Enter");

    portion2 = Integer.parseInt(input);`
错误消息:

Exception in thread "main" java.lang.NumberFormatException: For input string: "1 1/8"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:492)
at java.lang.Integer.parseInt(Integer.java:527)
at ClientCode.main(ClientCode.java:43)
Java结果:1


我到底做错了什么?

整数。parseInt只能解析有效的整数字符串。如果输入字符串包含除数字以外的任何内容,则它将抛出
NumberFormatException


您正在尝试分析表达式
1 1/8
,该表达式不是有效的整数字符串。

“1 1/8”
不是数字
1和
8是,空格和
/
不是。您需要手工解析这样的表达式

1 1/8
不是整数,
integer.parseInt
只在一种情况下运行良好,只要数据有效


不知道您期望的结果是什么,但您需要其他方法或自己解析它。

您实际上正在调用
evaluateFraction
?您需要重新考虑一下这种方法,因为您应该意识到您正在接受一个字符串并从分数返回一个double?请以sscce的形式给出。仅仅输入无关和未使用的代码只会造成混乱,没有帮助。你需要真正了解你在做什么。我必须把价值以美元和八分之一计算出来。我用portion1表示美元,portion2表示八分之一。我知道我需要“理解”,很明显我不需要。因此,我寻求帮助的唯一原因是,
evaluateFraction
在这里真的没有被使用/可用。那么我该怎么做呢?我已经尝试了我所知道的一切,但到目前为止什么都没有。@AP您最好尝试使用不同的算术运算符拆分字符串。你需要用所有有效的运算符来做这件事,得到操作数,然后进行相应的运算。如果我说我知道怎么做,那就是在撒谎。你介意再帮我一点忙吗?