在java中将字符串数组转换为int数组
我是java编程新手。我的问题是,我有一个在java中将字符串数组转换为int数组,java,Java,我是java编程新手。我的问题是,我有一个字符串数组,但当我试图将其转换为int数组时,我不断得到 java.lang.NumberFormatException 我的代码是 private void processLine(String[] strings) { Integer[] intarray=new Integer[strings.length]; int i=0; for(String str:strings){ intarray[i]=In
字符串
数组,但当我试图将其转换为int
数组时,我不断得到
java.lang.NumberFormatException
我的代码是
private void processLine(String[] strings) {
Integer[] intarray=new Integer[strings.length];
int i=0;
for(String str:strings){
intarray[i]=Integer.parseInt(str);//Exception in this line
i++;
}
}
任何帮助都会很好,谢谢 要消除额外的空白,可以如下更改代码:
intarray[i]=Integer.parseInt(str.trim()); // No more Exception in this line
int[] arr = strArrayToIntArray(/*YOUR STR ARRAY*/);
要帮助调试并改进代码,请执行以下操作:
private void processLine(String[] strings) {
Integer[] intarray=new Integer[strings.length];
int i=0;
for(String str:strings){
try {
intarray[i]=Integer.parseInt(str);
i++;
} catch (NumberFormatException e) {
throw new IllegalArgumentException("Not a number: " + str + " at index " + i, e);
}
}
}
此外,从代码整洁的角度来看,您可以通过以下方式减少行数:
for (String str : strings)
intarray[i++] = Integer.parseInt(str);
private void processLine(字符串[]字符串){
整数[]intarray=新整数[strings.length];
例如,对于(int i=0;i假设我们有一个字符串数组:
String[] strings = {"1", "2", "3"};
使用Lambda表达式(自Java 8以来),您可以执行下一个▼:
int[]array=Arrays.asList(strings).stream().mapToInt(Integer::parseInt).toArray();
▼这是另一种方式:
int[]array=Arrays.stream(strings).mapToInt(Integer::parseInt.toArray();
---------
注意事项
1.in.
二,
/*拆分数字数组
由空格分隔成字符串数组*/
Integer [] a = new Integer[s_array.length];
/创建大小等于字符串数组的int数组/
for(int i=0;i这是因为您的字符串不严格包含字符串格式的整数。它包含字母数字字符。另一种简单方式:
public static int[] strArrayToIntArray(String[] a){
int[] b = new int[a.length];
for (int i = 0; i < a.length; i++) {
b[i] = Integer.parseInt(a[i]);
}
return b;
}
int[] myIntArray = Arrays.stream(myStringArray).mapToInt(Integer::parseInt).toArray();
由于您试图获取一个整数[]
数组,您可以使用:
Integer[] intarray = Stream.of(strings).mapToInt(Integer::parseInt).boxed().toArray(Integer[]::new);
您的代码:
private void processLine(String[] strings) {
Integer[] intarray = Stream.of(strings).mapToInt(Integer::parseInt).boxed().toArray(Integer[]::new);
}
请注意,这仅适用于Java 8及更高版本。您传入的字符串是什么?“字符串中的字符必须全部为十进制数字,但第一个字符可以是ASCII减号“-”(“\u002D”)指示负值。返回结果的整数值,就像参数和基数10作为parseInt(java.lang.String,int)方法的参数一样。“当字符串不是正确格式的整数时,会发生这种情况。此外,您可能应该使用int[]
notinteger[]
.Hi发现错误字符串数组中有一个尾随“\r”。因此3被视为“3\r”。我删除了尾随,它\r工作正常。请以后复制/粘贴异常和错误消息。您可以编辑您的问题以添加这些详细信息。我建议您不要“代码整洁”建议-这会使代码更混乱,而不是更整洁。我发现“整洁”的代码非常可读。简洁的代码看起来非常漂亮。:@La comadreja我不这么认为。非整洁的方法更“自然”.如何使用相同的lambda表达式将字符串数组转换为整数对象数组?@ffguven我觉得自动装箱应该在需要时处理,还是我遗漏了什么?
int[] myIntArray = Arrays.stream(myStringArray).mapToInt(Integer::parseInt).toArray();
Integer[] intarray = Stream.of(strings).mapToInt(Integer::parseInt).boxed().toArray(Integer[]::new);
private void processLine(String[] strings) {
Integer[] intarray = Stream.of(strings).mapToInt(Integer::parseInt).boxed().toArray(Integer[]::new);
}