import java.util.Scanner;
class HistogramChart
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("Please enter the population of data: ");
int populationOfData = scan.nextInt();
System.out.println("Please enter data separated by spaces: ");
String data = scan.next();
int indexWhiteSpace = data.indexOf(" ");
int[] dataArray = new int[populationOfData];
int tempInt = 0;
for(int index = 0; index < populationOfData; index++)
{
String tempString = data.substring(0, indexWhiteSpace);
data = data.substring(indexWhiteSpace+1, data.length());
tempInt = Integer.parseInt(tempString);
dataArray[index] = tempInt;
indexWhiteSpace = data.indexOf(" ");
}
System.out.println(dataArray[0]);
}
}
我意识到还没有打印整个阵列,因为我只是想让它打印任何东西,但这会不断打印以下错误:
&#34;线程中的异常&#34; main&#34; java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-1 at java.lang.String.substring(String.java:1954) 在HistogramChart.main(HistogramChart.java:22) &#34; 我无法弄清楚为什么会这样说。 请帮忙!
答案 0 :(得分:2)
为什么不使用拆分?
class HistogramChart {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Please enter data separated by spaces: ");
String data = scan.nextLine();
String tmpDataArray[] = data.split(" ");
int dataArray[] = new int[tmpDataArray.length];
for (int i = 0; i < dataArray.length; ++i) {
dataArray[i] = Integer.parseInt(tmpDataArray[i]);
}
}
答案 1 :(得分:-1)
如果我没记错的话,请使用
String data = scan.next();
就像你正在做的那样,你只需扫描一个元素。尝试使用scan.nextLine()以便它占用整行,然后按空格分割,以便获得数据数组。而它实际上给你的问题是因为你寻找indexOf(" ")
但是因为你没有读完整行,所以你会得到一个-1。当您尝试查找索引为-1的子字符串时,您会收到该错误。