需要帮助将字符串输入拆分为int
我有这种格式的用户输入分数问题(4/8-3/12或3 + 2/3或12/16 * 4或-2/3/64/96),并且需要将这两个分数分成一个数组,然后我需要拉两个分子和分母,这样我就可以在其他文件中简化它们并进行所需的任何计算,所以我需要使用一个数组,以便我可以调用有符号的元素。需要帮助将字符串输入拆分为int
System.out.println("Enter Fraction:");
String answer = s.nextLine();
String[] numbers = answer.split(" ");
System.out.print(numbers);
有没有办法将数组拆分为int变量?我搞不清楚了。解决方案可能很简单,但现在已经在这个项目上工作了7个小时左右。
可以将输入用一个简单的正则表达式分裂,这样的:
Pattern p = Pattern.compile("\\d+|[+-/*]");
String inp = "2/3/64/96";
Matcher m = p.matcher(inp);
while (m.find()) {
System.out.println(m.group());
}
这种解决方案的心脏是一个正则表达式:
\\d+|[+-/*]
\\d+
意味着“一个或多个数字; [+-/*]
的意思是“+
,-
,/
或*
”中的任何一个“。
这里是demo on ideone。
请注意,你的程序将需要非常小心有关决定是否有一个+
或-
是一元“变征”或二进制操作:当符号是在开始或刚刚之后另一家运营商,它的一元;否则,它是二元的。
Eric Lippert在处理这些问题时有最好的建议。
用英文/伪代码写出问题,然后开始将伪代码更改为真实代码。
Get Answer from user
Break Answer up to the 2 fractions/numbers and the math operator
Take the 2 different fractions and convert them to a double, float, whatever you need
Apply the math operation to the 2 numbers from the above step
Output the answer
现在开始更换每条线,你将如何做到这一点。我相信你大概可以找出每一步,但有时我们在整体考虑问题时会迷失方向。如果您无法弄清楚单个步骤,请发布您尝试过的代码,我们可以帮助解决特定的问题。
我宁愿不将它们转换为双精度或浮点数,因为我正在寻找分数可以采用的最小形式和分数和答案。 –
因此,为什么我添加了“无论你需要什么”一节,双/浮动只是一个建议。 – Zipper
到目前为止,您的代码只是将输入拆分为表达式。你仍然需要将表达式拆分成分数。
当你已经有分数的String数组,可以将每个元素拆分成2个整数:
拆分成子串与
split("/")
转换每个子字符串
Integer.parseInt()
为int方法。
这解决了它,并感谢链接! –