Nehmen Sie eine einzige Zeile, Eingabe von zahlen und die Speicherung in ein array
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]);
}
}
Ich fest: es gibt noch nichts zu drucken Sie das gesamte array, als ich versuche nur, um es zu bekommen, um alles drucken, aber das ist ständig Druck die folgenden Fehler:
"Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
bei java.lang.String.substring(String.java:1954)
bei HistogramChart.main(HistogramChart.java:22)
"
Ich kann nicht herausfinden, warum dies so ist, sagen diese.
Bitte um Hilfe!!
- Es sagt so, weil Sie versuchen, Zugriff auf etwas, das außerhalb der Grenzen des Arrays. Ohne Blick auf deinen code, bitte helfen Sie sich selbst durch das Debuggen dieser. Setzen Sie einen Haltepunkt und Schritt für Schritt durch und sehen, wo es abstürzt.
- Scanner.Next() liefert dann nur das erste Wort. Dies bedeutet, dass Daten.IndexOf(" ") werden -1, geben Sie die SystemIndexOutOfBoundsException.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Warum nicht mit split ?
Wenn ich mich richtig erinnere, mit
Wie du tust, Sie wird nur Scannen Sie ein einzelnes element. Versuchen Sie es mit Scannen.nextLine - (), so dass es nimmt die ganze Linie, und teilen Sie Sie dann durch die Räume, so erhalten Sie ein array mit deinen Daten. Und das problen ist es tatsächlich geben Sie, weil Sie look für
indexOf(" ")
aber da bist du nicht Lesen einer vollständigen Zeile, dass nevers passiert, und Sie erhalten eine -1. Wenn Sie versuchen, suchen Sie nach einem substring mit dem index -1, dann erhalten Sie diesen Fehler.