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));
    }