Java 如何使用valueOf将字符串数组转换为int数组?
我想把下面的列表转换成一个整数数组。我试过使用Java 如何使用valueOf将字符串数组转换为int数组?,java,arrays,Java,Arrays,我想把下面的列表转换成一个整数数组。我试过使用valueof,但我不知道如何使用它。我不想解析它 我这里有一个字符串数组: String[]arr1=新字符串[]{“5”、“5”、“15”、“5”、“10”、“10”、“5”、“10”、“20”、“15”} 以下是我尝试的代码: int num=Integer.valueOf(arr1) 我收到一条错误消息: error: no suitable method found for valueOf(String[]) int num = I
valueof
,但我不知道如何使用它。我不想解析它
我这里有一个字符串数组:
String[]arr1=新字符串[]{“5”、“5”、“15”、“5”、“10”、“10”、“5”、“10”、“20”、“15”}代码>
以下是我尝试的代码:
int num=Integer.valueOf(arr1)代码>
我收到一条错误消息:
error: no suitable method found for valueOf(String[])
int num = Integer.valueOf(arr1);
^
method Integer.valueOf(String) is not applicable
(argument mismatch; String[] cannot be converted to String)
method Integer.valueOf(int) is not applicable
(argument mismatch; String[] cannot be converted to int)
Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output
1 error
使用流:
int[]intArray=Stream.of(arr1).mapToInt(Integer::parseInt).toArray();
我假设您希望将arr1
数组中的每个值映射到int
,结果应该是int[]
(不是一个int
)。流式处理数组,将元素映射到int
,然后调用toArray
。像
int[] numArr = Arrays.stream(arr1).mapToInt(Integer::valueOf).toArray();
请注意,以这种方式调用valueOf
仍然是将字符串
解析为int
的一个示例,您可以迭代数组
的每个元素,并将其转换为int
并将其推入IntArray
String[] arr1 = new String[]{"5","5","15","5","10","10", "5", "10", "20", "15"};
int[] intArr = new int[arr1.length];
for (int i = 0; i < arr1.length; i++) {
intArr[i] = Integer.valueOf(arr1[i]);
}
下面介绍了如何在不使用valueOf
或parseInt
的情况下执行此操作
String[]arr1=新字符串[]{“5”、“5”、“15”、“5”、“10”、“10”、“5”、“10”
};
int[]vals=Arrays.stream(arr1).mapToInt(str->str.chars().reduce(0,
(val,ch)->val*10+(ch-'0')).toArray();
System.out.println(Arrays.toString(vals));
以下是它的局限性:
如果字符串包含数字以外的字符。它会悄悄地给你错误的答案
它不处理负值
如果任何单个数字超过整数.MAX\u值
,它将抛出异常
我的建议是使用Integer.valueOf
。这就是它的目的。谢谢您的回答,正如前面提到的,我根本不想解析。还有其他方法吗。valueOf
在内部调用parseInt
所以不确定您是否有选择谢谢您的澄清,我对编程很陌生,所以我很困惑。我如何使用valueOf?如果您想将数字的字符串表示形式转换为int,然后你确实想解析它们。谢谢你的回答。我知道解析可能更容易,但我被告知不要使用它。谢谢你的澄清,我是编程新手,所以我感到困惑。可能重复感谢你的回答,正如前面提到的,我根本不想解析。有什么方法可以使用valueOf完成吗?是的,您可以使用valueOf
而不是parseInt
valueOf
返回一个int,而不是int-arr。这就是为什么您需要将其推入int-arr,或者像其他答案所建议的那样用于每个流或流。感谢您的澄清,我是编程新手,所以我感到困惑。我将如何使用valueOf?感谢您的澄清,我是编程新手,所以我感到困惑。
public static Integer valueOf(String s) throws NumberFormatException {
return Integer.valueOf(parseInt(s, 10));
}