我是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[] 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类),并希望他们能够同时输入许多数字。然后,我使用定界符模式将输入转换为一个数组。虽然这似乎没问题,但我只能想到如何使输入成为字符串数组,而不是int数组,这就是我的问题所在。
所以,我想问的是: 1)为什么我的代码不起作用? 2)有没有比这更简单的方法来获取用户的输入,并将其转换为int数组?
对于那些想看到我的整个代码的人,这是它的代码:
中间部分的test变量和两个数字的添加只是我测试代码是否工作的一种方式。它应该显示您输入的列表中的前两个数字相加的结果。
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;
}
}
array.length
将给出元素的数量而不是索引,因此您必须将循环条件更改为i < arrayString.length
。 - singhakash