我如何将这个java程序分解为多个方法? 它首先将一个字符串存储为输入,然后遍历它以将所有数字提取到数组列表中。然后它会打印所有这些数字及其总和和产品。
public class Assignment1 {
public static void main(String[] args){
// Creates scanner for storing input string
Scanner numScanner = new Scanner(System.in);
String input;
System.out.println("Enter a string of numbers to compute their sum and product:");
System.out.println("(Enter '.' to terminate program)");
input = numScanner.nextLine();
// Terminates the program if there is no input
if (input.length() == 0){
System.out.println("Invalid input: Not enough characters");
System.exit(-1);
}
// Terminates the program if the first character is '.'
if (input.charAt(0) == '.'){
System.out.println("Thank you for using numberScanner!");
System.exit(-1);
}
// Defines all of the variables used in the loops
int index = 0;
int sum = 0;
int product = 1;
Integer start = null;
int end = 0;
ArrayList<Integer> numbers = new ArrayList<>();
// Loop that extracts all numbers from the string and computes their sum and product
while (index < input.length()){
if (input.charAt(index) >= 'A' && input.charAt(index) <= 'Z' && start == null){
index++;
}else if (input.charAt(index) >= '1' && input.charAt(index) <= '9' && start == null){
start = index;
index++;
}else if (Character.isDigit(input.charAt(index))){
index++;
}else{
end = index;
numbers.add(Integer.parseInt(input.substring(start,end)));
sum += Integer.parseInt(input.substring(start,end));
product *= Integer.parseInt(input.substring(start,end));
index++;
start = null;
}
}
// For the last number, the end is greater than the length of the string
// This prints the last number without using the end
if (index == input.length()){
numbers.add(Integer.parseInt(input.substring(start)));
sum += Integer.parseInt(input.substring(start));
product *= Integer.parseInt(input.substring(start));
index++;
}
// Prints the Numbers, Sum and Product beside each other
System.out.print("Numbers: ");
for (Object a : numbers) {
System.out.print(a.toString() + " ");
}
System.out.println("Sum: " + sum + " Product: " + product);
}
}
我只是不知道如何将单个方法拆分为多个方法
答案 0 :(得分:1)
我认为在main
方法中使用I / O是可以的。我要搬出的是构建numbers
列表。您可以使用接受字符串的方法getNumbers
并返回该字符串中的数字列表。例如:
private static List<Integer> getNumbers(String str) {
List<Integer> numbers = new ArrayList<>();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (Character.isDigit(c))
numbers.add(c - '0');
}
return numbers;
}
现在循环遍历getNumbers()
返回的列表并计算元素的总和/产品应该是微不足道的:
List<Integer> numbers = getNumbers(input);
System.out.println(numbers);
int sum = 0;
int product = 1;
for (int i : numbers) {
sum += i;
product *= i;
}
System.out.printf("Sum: %d Product: %d%n", sum, product);