我让用户输入这种格式的分数问题(4/8-3/12或3+2/3或12/16*4或-2/3/64/96),需要将两个分数分成一个数组,然后我需要提取这两个数组的分子和分母,以便我可以在其他文件中简化它们,并执行它要求的任何计算,所以我需要使用一个数组,以便我可以调用其中包含符号的元素。
System.out.println("Enter Fraction:");
String answer = s.nextLine();
String[] numbers = answer.split(" ");
System.out.print(numbers);
有没有办法把数组分成整型变量?我迷路了。解决方案可能很简单,但现在已经在这个项目中工作了7个小时左右。
发布于 2013-04-12 10:19:23
您可以使用一个简单的正则表达式拆分输入,如下所示:
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。
请注意,在判断+
或-
是一元“更改符号”还是二元操作时,您的程序需要非常小心:当符号位于开头或紧跟在另一个操作符之后时,它是一元的;否则,它是二元的。
发布于 2013-04-12 10:17:57
在处理这些问题时,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
现在,只需将每一行替换为您将如何做到这一点。我相信你可能会弄清楚每一步,但有时当我们把问题作为一个整体来考虑时,我们会迷失方向。如果你找不到一个单独的步骤,发布你已经尝试过的代码,我们可以帮助你解决特定的问题。
发布于 2013-04-12 10:27:50
到目前为止,您的代码只是将输入拆分成表达式。您仍然需要将表达式拆分成分数。
当你已经有了分数的字符串数组时,你可以将每个元素拆分为两个整数:
Integer.parseInt()
方法将其拆分为多个子字符串,并将每个子字符串转换为int。https://stackoverflow.com/questions/15961968
复制相似问题