尝试将字符串数组的内容转换为要存储在 ArrayList 中的整数时出现 NumberFormatException
NumberFormatException when trying to convert the contents of a String Array into an Integer to be stored in an ArrayList
这是我当前的代码:
ArrayList<String> arrayCurrency = new ArrayList<String>();
ArrayList<Integer> arrayRate = new ArrayList<Integer>();
ArrayList<String> arraySymbol = new ArrayList<String>();
public void loadFile() {
File file = new File("C://Users//me//Documents//TestingAssignment//Assignment 2 Part 2//src/currency2.txt");
try {
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF8"));
String line = in.readLine().trim();
while (line != null) {
String[] parts = line.split(",");
line = in.readLine();
String currency = parts[0].trim();
String rate = parts[1].trim();
String symbol = parts[2].trim();
int rateConverted = Integer.parseInt(rate);
//int thisRate = rateConverted2;
arrayCurrency.add(currency);
arrayRate.add(rateConverted);
arraySymbol.add(symbol);
}
for(String name:arrayCurrency) {
System.out.println(name);
}
for(int name:arrayRate) {
System.out.println(name);
}
for(String name:arraySymbol) {
System.out.println(name);
}
in.close();
} catch (Exception e) {
String msg = e.getMessage();
JOptionPane.showMessageDialog(null, msg);
}
}
我已经使用调试器检查了代码。它在尝试转换文本文件中的第一个数字时发生。
.txt 文件的设置示例:
美元,1.60,$
我想将它分成 3 个不同的数组。但是,我在尝试将 parts[1].trim();
转换为整数以便将其存储在 ArrayList<Integer> arrayRate = new ArrayList<Integer>();
中时遇到问题。
显示的错误消息是:"For Input String:" 1.60".
感谢任何帮助。谢谢
如果你只想要整数部分,你可以这样做
String s = parts[1].trim();
double d = Double.parseDouble(s);
int i = (int) d;
如果您想要分开这两部分,请按以下步骤操作:
String s =parts[1].trim();
double d = Double.parseDouble(s);
int i = (int) d;
double j=d-i;
像“1.60”这样的数量应该更好地表示为双精度,而不是整数。
我建议您将金额 arrayList 更改为 ArrayList<Double>
并像下面这样解析比率:
double rateConverted = Double.parseDouble(rate);
1.6 不是整数。您需要将其存储在 Double List 中并使用 Double class.
的方法转换为 double
ArrayList<Double> arrayRate = new ArrayList<>();
Double dnum = Double.parseDouble(str);
参考这个link - https://beginnersbook.com/2013/12/how-to-convert-string-to-double-in-java/
这是我当前的代码:
ArrayList<String> arrayCurrency = new ArrayList<String>();
ArrayList<Integer> arrayRate = new ArrayList<Integer>();
ArrayList<String> arraySymbol = new ArrayList<String>();
public void loadFile() {
File file = new File("C://Users//me//Documents//TestingAssignment//Assignment 2 Part 2//src/currency2.txt");
try {
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF8"));
String line = in.readLine().trim();
while (line != null) {
String[] parts = line.split(",");
line = in.readLine();
String currency = parts[0].trim();
String rate = parts[1].trim();
String symbol = parts[2].trim();
int rateConverted = Integer.parseInt(rate);
//int thisRate = rateConverted2;
arrayCurrency.add(currency);
arrayRate.add(rateConverted);
arraySymbol.add(symbol);
}
for(String name:arrayCurrency) {
System.out.println(name);
}
for(int name:arrayRate) {
System.out.println(name);
}
for(String name:arraySymbol) {
System.out.println(name);
}
in.close();
} catch (Exception e) {
String msg = e.getMessage();
JOptionPane.showMessageDialog(null, msg);
}
}
我已经使用调试器检查了代码。它在尝试转换文本文件中的第一个数字时发生。
.txt 文件的设置示例:
美元,1.60,$
我想将它分成 3 个不同的数组。但是,我在尝试将 parts[1].trim();
转换为整数以便将其存储在 ArrayList<Integer> arrayRate = new ArrayList<Integer>();
中时遇到问题。
显示的错误消息是:"For Input String:" 1.60".
感谢任何帮助。谢谢
如果你只想要整数部分,你可以这样做
String s = parts[1].trim();
double d = Double.parseDouble(s);
int i = (int) d;
如果您想要分开这两部分,请按以下步骤操作:
String s =parts[1].trim();
double d = Double.parseDouble(s);
int i = (int) d;
double j=d-i;
像“1.60”这样的数量应该更好地表示为双精度,而不是整数。
我建议您将金额 arrayList 更改为 ArrayList<Double>
并像下面这样解析比率:
double rateConverted = Double.parseDouble(rate);
1.6 不是整数。您需要将其存储在 Double List 中并使用 Double class.
的方法转换为 doubleArrayList<Double> arrayRate = new ArrayList<>();
Double dnum = Double.parseDouble(str);
参考这个link - https://beginnersbook.com/2013/12/how-to-convert-string-to-double-in-java/