对于这个程序,我将输入作为一个字符串,格式如下:一个名称,后跟以空格分隔的整数。系列中可以有一个或多个整数。它的输出最终是该系列的名称及其总和。以下是输出应该是什么的示例:
Series? seriesname 1 3 5 7 11
sum(seriesname) = 27
我的代码出现问题,它一直存在问题(例外):
int number = Integer.parseInt(series.substring(start, space));
我已经移动了很多,但这就是我现在所拥有的:
import java.util.Scanner;
public class NamePlusAddingInts {
public static String series;
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.print("Series? ");
series = scan.nextLine();
String name = series.substring(0, series.indexOf(' '));
System.out.print("Sum(" + name + ") = " + number);
}
public static int adding() {
int space = series.indexOf(' ');
while (space != -1) {
int start = space + 1;
int number = Integer.parseInt(series.substring(start, space));
number = number + number;
space++;
}
return number;
}
}
答案 0 :(得分:1)
你是在思考它。你感兴趣的东西之间有明确的分隔符,你可以在空格处分割字符串,将第一个元素作为名称并使代码更清晰,考虑一下:
String numbers = "name 5 20 26 4 2 13";
String[] splitNumbers = numbers.split(" ");
int sum =0;
String name = splitNumbers[0]
for(int i = 1; i < splitNumbers.length ; i++){
sum += Integer.parseInt(splitNumbers[i]);
}
现在只需将硬编码数字值更改为用户输入及其完成。如果您害怕用户输入数字以外的其他内容,您可以在try-catch中将其包围以检查格式异常。
答案 1 :(得分:0)
add()方法的更好实现是将长字符串分解为字符串数组。您可以调用String
方法split(" ")
将字符串转换为字符串数组。
public static int adding(String input) {
int sum = 0;
String[] array = input.split(" ");
//starts from 1 because array[0] is the name of the series
for (int i = 1; i < array.length; i++) {
sum += Integer.parseInt(array[i]);
}
return sum;
}
希望这有帮助!