好的,我们假设我有字符串7 + 8 = 15
,我希望能够得到第二个数字,在这种情况下为8,用于字符串。我还希望能够对任何字符串执行此操作,例如64 - 29 = 35
或12 * 12 = 144
。
然而,有一些限制。我不能使用数组,try / catch,SystemTokenizer或regex。
我尝试过使用.substring,但这似乎只能有一个设置位置,所以我不知所措。
String str = "7 + 8 = 15";
int whiteSpace1 = str.indexOf(" ");
int first = Integer.parseInt(str.substring(0, whiteSpace1));
我知道这会给我第一个数字,但是,我不知道如何获得第二个数字以便计算它们,以便我可以在=
之后检查数学与答案。不,数字之间的空格并不总是存在。
(我知道这很奇怪,但出于某种原因,我的CS老师介绍似乎认为这是一个很棒的任务)
答案 0 :(得分:1)
如果字符串是:
String str1 = "64-29=35"; //no space before = and after -
System.out.println(str1.substring(str1.indexOf("-")+1, str1.indexOf("=")));
<强>输出:强>
29
如果字符串是:
String str1 = "64 - 29 = 35";//with spaces
比
System.out.println(str1.substring(str1.indexOf("-")+2, str1.indexOf("=")-1));
答案 1 :(得分:1)
如果操作员的每一侧都有空格并且等号,则可以执行类似
的操作String s = "7 + 5 = 12";
s = s.substring(0, s.indexOf("=")).trim();
int number = Integer.parseInt(s.substring(s.lastIndexOf(" ") + 1))
无论经营者如何,上述都应该有效。
如果没有空格,则必须循环遍历每个字符以查找第一个非整数字符并开始构建编号。或者,您可以为每个运算符编写单独的代码,以避免循环。
答案 2 :(得分:0)
您可以使用正则表达式执行此操作。
s.split("[-+=*]")[1]
split函数使用正则表达式来标识所有匹配项,并使用每个正则表达式字符作为分隔符进行相应的拆分。它返回所有分隔值的String数组。你需要数组中的第二个值。
只需在[]中添加字符串中第一个和第二个数字之间可能遇到的操作数。