如何将String数组转换为Int数组?

时间:2017-01-10 09:09:15

标签: java arrays

我已经研究了几个小时试图找出如何将String数组转换为Int数组但没有运气。

我正在创建一个程序,您可以使用三个转子加密消息。我能够键入一条消息,并获得第一个转子(内转子)的索引号,以加密到第三个转子(外转子)。问题是索引号是在一个字符串数组中,我希望它成为一个int数组。

是的,我试过了

int[] array == Arrays.asList(strings).stream()
        .mapToInt(Integer::parseInt).toArray();

或任何形式的。我不确定我是否有java 8,因为它不起作用,但它给了我一个错误。

有人可以帮我解决如何将String数组转换为Int数组的问题吗?

public void outerRotorEncrypt(){


String indexNumberSpilt [] = indexNumber.split(" ");

System.out.println("indexNumber length: " + indexNumber.length()); //test
System.out.println("indexNumberSpilt length: " + indexNumberSpilt.length); //test
System.out.println("Index Number Spilt: " + indexNumberSpilt[3]); //test
System.out.println("");


System.out.println("");
System.out.println("testing from outerRotorEncrypt");
System.out.println("");



for(int i = 1; i < indexNumberSpilt.length; i++){


    secretMessage = secretMessage + defaultOuterRotorCharacterArray[indexNumberSpilt[i]];



}

System.out.println("Secret Message from outerRotorEncrypt: " + secretMessage);

6 个答案:

答案 0 :(得分:2)

如果您使用的是Java8,那么这是解决此问题的简单方法。

List<?> list = Arrays.asList(indexNumber.split(" "));
list = list.stream().mapToInt(n -> Integer.parseInt((String) n)).boxed().collect(Collectors.toList());

在第一行中,您将获取一个通用列表对象并将您的数组转换为列表,而使用流API时,相同的列表将填充等效的整数值。

答案 1 :(得分:1)

static int[] parseIntArray(String[] arr) {
    return Stream.of(arr).mapToInt(Integer::parseInt).toArray();
}

所以拿一个字符串流[]。使用mapToInt为每个元素调用Integer.parseInt并转换为int。然后在结果IntStream上调用toArray返回数组。

答案 2 :(得分:1)

你试过了吗?

int[] array = new int[indexNumberSpilt.lenght()];
for ( int i=0;i<indexNumberSpilt.lenght();i++ ){
   array[i] = Integer.valueOf(indexNumberSpilt[i]);
}

答案 3 :(得分:1)

int[] array == Arrays.asList(strings).stream()
        .mapToInt(Integer::parseInt).toArray();

它发出错误的原因是因为==,将其更改为=(赋值运算符)应该有效,例如:

String[] input = new String[]{"1", "2"};
int[] array = Arrays.asList(input).stream()
        .mapToInt(Integer::parseInt).toArray();
for(int a : array){
    System.out.println(a);
}

答案 4 :(得分:0)

小型演示

String[] string = { "0", "1", "11", "0", "0", "1", "11", "0", "0", "1",
            "11", "0" };
    List<String> temp = Arrays.asList(string);
    List<Integer> temp1 = new ArrayList<Integer>();
    for (String s : temp) {
        temp1.add(Integer.parseInt(s));
    }

    int[] ret = new int[temp1.size()];
    for (int i = 0; i < ret.length; i++) {
        ret[i] = temp1.get(i).intValue();
    }

    System.out.println(Arrays.toString(ret));
}

答案 5 :(得分:0)

int []

如果要使用int[]数组:

String indexNumber = "1 2 3 4";
String[] indexNumberSpilt = indexNumber.split(" ");
int[] result = Stream.of(indexNumberSpilt).mapToInt(Integer::parseInt).toArray();
System.out.println(Arrays.toString(result));

整数[]

String indexNumber = "1 2 3 4";
String[] indexNumberSpilt = indexNumber.split(" ");
Integer[] result = Stream.of(indexNumberSpilt).mapToInt(Integer::parseInt).boxed().toArray(Integer[]::new);
System.out.println(Arrays.toString(result));

两个示例都将打印:

[1、2、3、4]