Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将字符串数组转换为Int数组?_Java_Arrays - Fatal编程技术网

Java 如何将字符串数组转换为Int数组?

Java 如何将字符串数组转换为Int数组?,java,arrays,Java,Arrays,我做了几个小时的研究,试图找出如何将字符串数组转换为Int数组,但运气不好 我正在制作一个程序,在这个程序中,你可以通过使用三个转子来加密一条消息。我能够键入消息并获取第一个转子(内转子)的索引号,以加密到第三个转子(外转子)中。问题是索引号在一个字符串数组中,我希望它变成一个int数组 是的,我试过了 int[] array == Arrays.asList(strings).stream() .mapToInt(Integer::parseInt).toArray(); 或

我做了几个小时的研究,试图找出如何将字符串数组转换为Int数组,但运气不好

我正在制作一个程序,在这个程序中,你可以通过使用三个转子来加密一条消息。我能够键入消息并获取第一个转子(内转子)的索引号,以加密到第三个转子(外转子)中。问题是索引号在一个字符串数组中,我希望它变成一个int数组

是的,我试过了

int[] array == Arrays.asList(strings).stream()
        .mapToInt(Integer::parseInt).toArray();
或者任何形式的。我不确定我是否有Java8,因为它不工作,但它给了我一个错误

有人能帮我把
字符串
数组转换成
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);
}
public void outerRotorEncrypt(){
字符串[]indexNumberSpilt=indexNumber.split(“”);
System.out.println(“indexNumber长度:+indexNumber.length());//测试
System.out.println(“indexNumberSpilt长度:“+indexNumberSpilt.length”);//测试
System.out.println(“索引号溢出:“+indexNumberSpilt[3]);//测试
System.out.println(“”);
System.out.println(“”);
System.out.println(“从外部到加密的测试”);
System.out.println(“”);
对于(int i=1;i
以字符串[]的流为例。使用mapToInt为每个元素调用Integer.parseInt并转换为int。然后只需在生成的IntStream上调用toArray即可返回数组。

您尝试过:

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

对于(inti=0;i,如果您使用的是Java8,那么这是解决此问题的简单方法

List<?> list = Arrays.asList(indexNumber.split(" "));
list = list.stream().mapToInt(n -> Integer.parseInt((String) n)).boxed().collect(Collectors.toList());
List List=Arrays.asList(indexNumber.split(“”));
list=list.stream().mapToInt(n->Integer.parseInt((String)n)).boxed().collect(Collectors.toList());
在第一行中,您将获取一个通用列表对象,并将数组转换为列表,然后使用流api将相同的列表填充为等效的整数值

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);
}
小型演示

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));
}
String[]String={“0”、“1”、“11”、“0”、“0”、“1”、“11”、“0”、“0”、“1”,
"11", "0" };
List temp=Arrays.asList(字符串);
List temp1=new ArrayList();
用于(字符串s:temp){
temp1.add(Integer.parseInt);
}
int[]ret=new int[temp1.size()];
对于(int i=0;i
int[]

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));
如果需要
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]


如果您运行的是Java 8,那么您的第一次尝试应该会成功,请发布错误消息。如果您的
outerrororencrypt
方法与问题有什么关系?@MarounMaroun
Java.util.Scanner.throwFor(Scanner.Java:864)Java.util.Scanner.ner(Scanner.Java:1485)的线程“main”Java.util.inputmatchException中的异常EnigmaClient.main(EnigmaClient.java:15)的简介(EnigmaClient.java:91)
您的错误似乎与您显示的方法或创建int数组无关,而是发生在完全不同的位置。请显示
简介
方法和您的输入。OP说这对他不起作用,您的回答有什么帮助?它告诉我“1.8.0_111”是Java 8吗?我可能有一个在无法从拆分中删除的字符串数组之前,这就是它无法转换为int的原因。@AllenTran请提供'indexNumber'的字符串值,以便我可以正确提供拆分函数0。因此,我开始循环时使用int I=1;而不是I=0;抱歉,这是“5 19 20 20 6 10 6 17 20 15”编辑:这些数字是指转子的索引。
线程“main”java.lang.NumberFormatException中的异常:对于输入字符串:“”在java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)在java.lang.Integer.parseInt(Integer.java:592)在java.lang.Integer.valueOf(Integer.java:766)在Enigma.OutErrorToRecypt(Enigma.java:160)在Enigma.innerTorEncrypt(Enigma.java:131)在Enigma.secretMessage(Enigma.java:85)在Enigma.isRotorValid(Enigma.java:59)在EnigmaClient.introduction(EnigmaClient.java:102)在EnigmaClient.main(EnigmaClient.java:15)