Trying to calculate a sum from input, when text is thrown in as well
让输入通过扫描仪。它有数字、字母和空格。
字母被去掉,只留下空格和数字。
如果输入时不带空格,则可以正常工作,但如果添加空格,则会引发错误:
java.lang.NumberFormatException: For input string:"" (in
java.lang.NumberFormatException)
这是针对行应用的
int dataint=integer.parseint(数据[i]);
Stderr outputs
java.lang.NumberFormatException: For input string:"" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:592) at
java.lang.Integer.parseInt(Integer.java:615) at
Program2.main(Program2.java:21)
代码如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | import java.util.*; import java.io.*; public class Program2 { public static void main(String[] args) { Scanner kb = new Scanner(System.in); String input = kb.nextLine(); input = input.replaceAll("[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]",""); System.out.println(input); while(!input.equals("#")){ String[] data = input.split(""); int sum = 0; if (!input.equals("")){ for(int i = 0; i < data.length; i++){ int dataInt = Integer.parseInt(data[i]); sum = sum + dataInt; } } System.out.println(sum); input = kb.nextLine(); } } //main } // class Program2 |
结果表明,这个程序应该提取每行中的所有数字,并将它们相加。每行都可以自由地与字符和空格混合。例:
有几件事不对
1 2 | if (!input.equals("")) for(int i = 0; i < data.length; i++){ |
只检查输入是否为空,但它应该是我们应该担心的拆分子字符串数组,因为这是我们应该操作的。调用
1 2 | for(int i = 0; i < data.length; i++){ if (!data[i].equals("")) |
在运行代码时,有时程序在调用
字符串输入基本上是由一系列字母和空格分隔的数字列表。你可以用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | import java.util.*; import java.io.*; public class Program2 { public static void main(String[] args) { Scanner kb = new Scanner(System.in); String input = kb.nextLine(); System.out.println(input); while(!input.equals("#")) { // VVV String[] data = input.split("[^\\d]+"); int sum = 0; for(int i = 0; i < data.length; i++) { if (!data[i].equals("")) { int dataInt = Integer.parseInt(data[i]); sum = sum + dataInt; } } System.out.println(sum); input = kb.nextLine(); } } //main } // class Program2 |