首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >需要帮助将输入从字符串拆分成整型

需要帮助将输入从字符串拆分成整型
EN

Stack Overflow用户
提问于 2013-04-12 10:10:20
回答 3查看 389关注 0票数 1

我让用户输入这种格式的分数问题(4/8-3/12或3+2/3或12/16*4或-2/3/64/96),需要将两个分数分成一个数组,然后我需要提取这两个数组的分子和分母,以便我可以在其他文件中简化它们,并执行它要求的任何计算,所以我需要使用一个数组,以便我可以调用其中包含符号的元素。

代码语言:javascript
运行
复制
System.out.println("Enter Fraction:");
String answer = s.nextLine(); 


String[] numbers = answer.split(" ");
System.out.print(numbers);

有没有办法把数组分成整型变量?我迷路了。解决方案可能很简单,但现在已经在这个项目中工作了7个小时左右。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-12 10:19:23

您可以使用一个简单的正则表达式拆分输入,如下所示:

代码语言:javascript
运行
复制
Pattern p = Pattern.compile("\\d+|[+-/*]");
String inp = "2/3/64/96";
Matcher m = p.matcher(inp);
while (m.find()) {
    System.out.println(m.group());
}

这个解决方案的核心是一个正则表达式:

代码语言:javascript
运行
复制
\\d+|[+-/*]

\\d+表示“一个或多个数字;[+-/*]表示”+-/*中的任何一个“。

这是一个demo on ideone

请注意,在判断+-是一元“更改符号”还是二元操作时,您的程序需要非常小心:当符号位于开头或紧跟在另一个操作符之后时,它是一元的;否则,它是二元的。

票数 1
EN

Stack Overflow用户

发布于 2013-04-12 10:17:57

在处理这些问题时,Eric Lippert有我所见过的最好的建议。

用英文/伪码写出问题,然后开始把伪码改成实码。

代码语言:javascript
运行
复制
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
EN

Stack Overflow用户

发布于 2013-04-12 10:27:50

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

当你已经有了分数的字符串数组时,你可以将每个元素拆分为两个整数:

  1. 使用Integer.parseInt()方法将其拆分为多个子字符串,并将每个子字符串转换为int。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15961968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档