gpt4 book ai didi

java - 如何将字符串数组转换为整数数组?

转载 作者:搜寻专家 更新时间:2023-11-01 01:10:01 25 4
gpt4 key购买 nike

我是 Java 编程的新手,但在浏览该站点后,我相当确定这应该可行。

 public static int[] ArrayStringToArrayInt(String[] arrayString) {
int[] arrayInt = new int[arrayString.length]; //Array of Ints for output

for (int i = 0; i <= arrayString.length; i++ ) { //Run through the
arrayInt[i] = Integer.parseInt(arrayString[i]); //array, Parsing each
} //item into an int

return arrayInt;
}

我想要这个方法做的是获取一个输入数组:["1","2","3"],每个项目都是一个字符串并返回 [1,2,3],其中每个项目都是一个 int。

我正在用这段代码调用方法

int[] toBeSorted = ArrayStringToArrayInt(inputStringArray);

在这种情况下,toBeSorted 在这里被声明并同时被初始化。

每当我尝试运行它时,我都会收到以下错误:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at sorter.Sorter.ArrayStringToArrayInt(Sorter.java:31)
at sorter.Sorter.main(Sorter.java:22)
Java Result: 1

第 31 行是我的 For 循环的主体,执行解析的部分,第 22 行是调用方法的地方。

我需要这个的原因是因为我正在尝试使用 Scanner 类从用户那里获取输入,并希望他们能够同时输入多个数字。然后我使用定界符模式将输入转换为数组。虽然这看起来不错,但我只能弄清楚如何使输入成为字符串数组,而不是整数,这是我的问题。

所以我想我想问的是1)为什么我的代码不起作用?和2) 有没有比这更简单的方法来获取用户的输入并将其转换为整数数组?

对于那些想看我的全部代码的人,这里是

中间带有测试变量的位和两个数字的相加只是我测试我的代码并查看它是否有效的一种方式。它应该显示将您输入的列表中的前两个数字相加的结果

package sorter;

import java.util.Scanner;
import java.util.Arrays;

public class Sorter {

public static void main(String[] args) {

Scanner userInput = new Scanner( System.in );

System.out.println("Enter a list to be sorted, seperate numbers by commas:");

String input = userInput.nextLine(); //Gets aan input as a String
String delims = "[,]+"; //Use Comma as Delimiter
String[] inputStringArray = input.split(delims); //Parse String and creates
//an array

System.out.println(Arrays.toString(inputStringArray)); //Outputs a string of
//the given array

int[] toBeSorted = ArrayStringToArrayInt(inputStringArray);
int test = toBeSorted[0] + toBeSorted[1];
System.out.println(test);
}

public static int[] ArrayStringToArrayInt(String[] arrayString) {
int[] arrayInt = new int[arrayString.length]; //Array of Ints for output

for (int i = 0; i <= arrayString.length; i++ ) { //Run through the
arrayInt[i] = Integer.parseInt(arrayString[i]); //array, Parsing each
} //item into an int

return arrayInt;
}
}

最佳答案

你弄错了循环的范围:

for (int i = 0; i <= arrayString.length; i++ )

应该是

for (int i = 0; i < arrayString.length; i++ )

数组的有效索引介于 0 和 arrayString.length - 1 之间。

作为奖励,这里有一个用 Java 8 实现相同效果的更好方法:

public static int[] ArrayStringToArrayInt(String[] arrayString) 
{
return Stream.of(arrayString).mapToInt(Integer::parseInt).toArray();
}

关于java - 如何将字符串数组转换为整数数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29733494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com