需要帮助将字符串输入拆分为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

请注意,你的程序将需要非常小心有关决定是否有一个+-是一元“变征”或二进制操作:当符号是在开始或刚刚之后另一家运营商,它的一元;否则,它是二元的。

+0

这解决了它,并感谢链接! –

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 

现在开始更换每条线,你将如何做到这一点。我相信你大概可以找出每一步,但有时我们在整体考虑问题时会迷失方向。如果您无法弄清楚单个步骤,请发布您尝试过的代码,我们可以帮助解决特定的问题。

+0

我宁愿不将它们转换为双精度或浮点数,因为我正在寻找分数可以采用的最小形式和分数和答案。 –

+0

因此,为什么我添加了“无论你需要什么”一节,双/浮动只是一个建议。 – Zipper

到目前为止,您的代码只是将输入拆分为表达式。你仍然需要将表达式拆分成分数。

当你已经有分数的String数组,可以将每个元素拆分成2个整数:

  1. 拆分成子串与split("/")

  2. 转换每个子字符串Integer.parseInt()为int方法。