エラーが発生し続ける:java.lang.ArrayIndexOutOfBoundsException:1私のコード内。これは私の最初の学期のJavaですので、どんな助けでも大歓迎です。また、1つの石で2羽の鳥を殺すために。 if文の1つに問題があります。java.lang.ArrayIndexOutOfBoundsExceptionおよびコンマの後のエントリが整数でない場合
コンマの後にエントリが整数でない場合:
出力:「エラー:整数が続かないコンマ。」
ありがとうございます。
import java.util.Scanner;
import java.util.ArrayList;
import java.io.PrintWriter;
import java.io.StringWriter;
public class DataVisualizer {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Scanner inSS = null;
String title = "";
String column1header = "";
String column2header = "";
String dataString = "";
String dataPoint = "";
String dataInt = "";
boolean inputDone = false;
char comma = ',';
System.out.println("Enter a title for the data: ");
title = input.nextLine();
System.out.println("You entered: " + title);
System.out.println("");
System.out.println("Enter the column 1 header: ");
column1header = input.nextLine();
System.out.println("You entered: " + column1header);
System.out.println("");
System.out.println("Enter the column 2 header: ");
column2header = input.nextLine();
System.out.println("You entered: " + column2header);
System.out.println("");
ArrayList<String> string = new ArrayList<String>();
ArrayList<Integer> integer = new ArrayList<Integer>();
System.out.println("Enter a data point (-1 to stop input): ");
while (!inputDone) {
dataPoint = input.nextLine();
inSS = new Scanner(dataPoint);
if (dataPoint.equals("-1")) {
inputDone = true;
break;
}
if (!dataPoint.contains(",")) {
System.out.println("Error: No comma in string.");
}
// Here is the problem I am running with my if statement.
if (dataPoint.indexOf(",") != dataPoint.lastIndexOf(",")) {
System.out.println("Error: Too many commas in input.");
}
if (Character.isDigit(dataPoint.charAt(-1))) {
System.out.println("Error: Comma not followed by an integer.");
System.out.println("");
System.out.println("Enter a data point (-1 to stop input): ");
}
else {
// This is where Im getting my error
String[] items = dataPoint.split(",");
for (int i = 0; i < items.length; ++i){
dataString = items[0];
dataInt = items[1];
}
Integer dataInteger = Integer.valueOf(dataInt);
System.out.println("Data string: " + dataString);
System.out.println("Data integer: " + dataInteger);
string.add(dataString);
integer.add(dataInteger);
}
System.out.println("");
System.out.println("Enter a data point (-1 to stop input): ");
}
return;
}
}
あなたのエラーは 'items [1]'がないので、 'dataInt = items [1];'が失敗したことを伝えています。また、ハードコードされたインデックスで要素にアクセスする場合、 'items'をループするのはなぜですか? –
http://stackoverflow.com/questions/5554734/what-causes-a-java-lang-arrayindexoutofboundsexception-and-how-do-i-prevent-it –