[英]Listing Array values of different types and adding them
我正在嘗試編寫一個程序,其中用戶輸入一系列數字作為字符串,然后該程序將字符串拆分為單獨的數字,按類型對它們進行分類,按組將它們列出在一起,然后將它們加在一起。 例如,用戶輸入1、5、3L,284L,4.3和2.34。 然后,程序一起列出1和5,一起列出3和284,一起列出4.3和2.34。 然后,程序顯示數字299.64。 但是,我遇到了錯誤。 我將發布到目前為止的內容。 我的問題可能來自何處? 謝謝。
這是我的錯誤:
Exception in thread "main" java.lang.NumberFormatException: For input string: "1, 2L, 3.3"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Long.parseLong(Unknown Source)
at java.lang.Long.parseLong(Unknown Source)
at change.NumberArray.Convert(NumberArray.java:21)
at change.TestNumberArray.main(TestNumberArray.java:9)
碼:
package change;
import java.util.ArrayList;
import java.util.Scanner;
public class NumberArray {
static Scanner s = new Scanner(System.in);
public static void Convert(){
System.out.print("Enter numbers by: ");
String input = s.nextLine();
String[] inputString = input.trim().split(" , ");
int i = 0;
ArrayList<Long> listLong = new ArrayList<Long>();
ArrayList<Double> listDouble = new ArrayList<Double>();
ArrayList<Integer> listInt = new ArrayList<Integer>();
while (i < inputString.length){
if (inputString[i].contains("L")){
long temp = Long.parseLong(inputString[i]);
listLong.add(temp);
i++;
}
else if (inputString[i].contains(".")){
double temp = Double.parseDouble(inputString[i]);
listDouble.add(temp);
i++;
}
else{
int temp = Integer.parseInt(inputString[i]);
listInt.add(temp);
i++;
}
}
System.out.println("Here are the long numbers you entered:");
for (int q = 0; q < listLong.size(); q++)
{
System.out.println(listLong.get(q));
}
System.out.println("Here are the double numbers you entered:");
for (int q = 0; q < listDouble.size(); q++)
{
System.out.println(listDouble.get(q));
}
System.out.println("Here are the integer numbers you entered:");
for (int q = 0; q < listInt.size(); q++)
{
System.out.println(listInt.get(q));
}
System.out.println("Here is the sum of the numbers you entered: ");
double sum = 0;
for (int z = 0; z < inputString.length; z++)
{
sum = sum + Double.parseDouble(inputString[z]);
}
System.out.print(sum);
}
}
你有:
String[] inputString = input.trim().split(" , ");
它將完全匹配空格->逗號->空格。 (此拆分定界符不能正常工作的一個很好的提示是,整個未拆分的輸入字符串都在錯誤消息中。)您可以使用這樣的正則表達式來忽略空白:
String[] inputString = input.trim().split("\\s*,\\s*");
或者您也可以以逗號分隔...
String[] inputString = input.trim().split(",");
...然后在以后使用inputString[i].trimmed()
。
順便說說; 解決此問題后,解析“ L”字符串時會遇到問題,例如“ 3L”不是有效的整數。 您將必須從字符串中獲取“ L”來進行解析。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.