我已经研究了几个小时试图找出如何将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);
答案 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]