对于我的学校,我必须创建一个add
函数,可以添加2个数字。
示例:/add 6 4
解决方案:10
这是我目前的代码,它允许我这样做,但最多只有/add 9 9
:
String stString = message_text;
String number = stString.replaceAll("[^0-9]", "");
int numArr[] = new int[2];
for (int i = 0; i<2; i++) {
numArr[i] = Integer.parseInt(String.valueOf(number.charAt(i)));
}
int sum = IntStream.of(numArr).sum();
我需要一种能够使用/add 14 23
左右的方法。
答案 0 :(得分:2)
为什么不使用这样的分割:
String[] myValues = stString.split(" ");
然后通过myValues [1]和myValues [2]
获取值答案 1 :(得分:1)
不能为你写作业,但要看你的逻辑。如果您只阅读一个字符,则只能有一个数字。
解析多位数输入而不是使用charAt()
。采取一些额外的代码行来收集和构建您的输入。尝试String.substring()
或String.split()
并从那里开始工作。
答案 2 :(得分:1)
由于您已经在使用流,因此您可以制作一个仅限流的流解决方案:
int sum = Stream.of(stString.split(" ")).
skip(1).
mapToInt(Integer::parseInt).
sum();
答案 3 :(得分:0)
您的问题是,您使用replace()
,String.valueOf()
和IntStream.of(numArr).sum()
使问题太复杂,然后您将程序限制为只读取一个字符,因此您的数字将始终为仅由一位数组成。
<强>解决方案:强>
您只需使用.split()
方法并将空格作为分隔符传递给它:
String stString = "/add 64 10";
int a = Integer.parseInt(stString.split(" ")[1]);
int b = Integer.parseInt(stString.split(" ")[2]);
System.out.println(a+b); //will print 74
答案 4 :(得分:0)
您的方法存在的问题是,您将String
中所需数字的索引与String
中的实际索引混淆。
基本上你想要两个数字,但你总是在替换后连续找两个数字。
解决此问题的一种方法是使用简单的正则表达式来获取1+数字序列并收集它们。
例如:
String[] test = {
"/add 1 2",
"/add 22 20"
};
Pattern digits = Pattern.compile("\\d+");
for (String s: test) {
// parsing after /add
String sequence = s.substring(4);
// matching digits
Matcher m = digits.matcher(sequence);
// finding as many numbers as possible - you can always hard-limit to 2 if needed
long sum = 0;
while (m.find()) {
// no need to check parsing, it will always be integer figures at this point
sum += Integer.parseInt(m.group());
}
System.out.println(sum);
}
<强>输出强>
3
42
答案 5 :(得分:0)
您可以使用拆分字符串,然后将片段转换为数字:
String stString = "/add 14 56";
String[] fragments = stString.split(" ");
int sum = 0;
// Start from fragment 1 assuming that fragment 0 is "/add"
for (int i = 1; i < fragments.length; i++)
try {
sum += Integer.valueOf(fragments[i]);
} catch (Exception e) {
System.err.println("Something went wrong converting the strings into integers.");
System.err.println("Please check the input string.");
System.err.println("\n");
e.printStackTrace();
break;
}