2016-07-14 12 views
1

エラーが発生し続ける: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; 
    }  
} 
+0

あなたのエラーは 'items [1]'がないので、 'dataInt = items [1];'が失敗したことを伝えています。また、ハードコードされたインデックスで要素にアクセスする場合、 'items'をループするのはなぜですか? –

+0

http://stackoverflow.com/questions/5554734/what-c​​auses-a-java-lang-arrayindexoutofboundsexception-and-how-do-i-prevent-it –

答えて

0

あなたがここにあなたがインデックスが)(String.lengthです0〜の間でなければなりませんStringIndexOutOfBoundsException

Character.isDigit(dataPoint.charAt(-1)) 

を取得され、インデックス-1で文字を取得しようとしている - 1

+0

ありがとうございます!それは理にかなっている。私は今NumberFormatErrorを取得していますが:Integer dataInteger = Integer.valueOf(dataInt);カンマの後に情報を整数変数に格納するはずです。だから私はこれがうまくいくと思った。私はここで何か間違っているように感じる。 –

+0

'items [1] .trim()'を '整数 'として解析する前に – Saravana

関連する問題