gpt4 book ai didi

java - 列出不同类型的数组值并将它们相加

转载 作者:行者123 更新时间:2023-11-30 04:00:36 24 4
gpt4 key购买 nike

我正在尝试编写一个程序,其中用户输入一系列数字作为字符串,然后程序将字符串拆分为单独的数字,按类型对它们进行分类,按组将它们列出,然后将它们加在一起。例如,用户输入 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”才能解析它。

关于java - 列出不同类型的数组值并将它们相加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22085954/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com