2017-11-27 9 views
-4

Ich habe versucht, drei Befehlszeilenargumente als Eingabe zu nehmen und einige grundlegende mathematische Operationen, aber der Compiler zeigt Arrayindex außerhalb der Grenze Fehler in Zeilen mit Interger.parseInt().Integer.parseInt() -Anweisung zeigt Array-Index außerhalb des Bound-Fehlers während der Eingabe in java

public class testarray { 

    public static void main(String args[]) { 

     int i=0; 
     int length,start,increament; 
     /*trying to take 3 command line arguments */ 
     length=Integer.parseInt(args[0]); 
     int array[]=new int[length]; 
     start=Integer.parseInt(args[1]); 
     increament=Integer.parseInt(args[2]); 
     if(args.length!=3) { 
      System.out.println("error"); 
     } 
     else 
     { 
      for(i=0;i<array.length;i++) { 
       array[i]=start+(start+increament); 
      } 
      System.out.printf("%5d%8d\n","index", "value"); 

      for(i=0;i<=array.length;i++) { 
       System.out.printf("%d%d\n",i,array[i]); 
      } 
     } 

    } 

} 
+1

diese Aussage, dass die Ausnahme nicht verursachen kann. Überprüfen Sie die Zeile erneut – Stultuske

+0

Dann lesen Sie wahrscheinlich außerhalb der Grenzen Ihres Arrays. –

+0

/* Versuch, 3 Befehlszeilenargumente zu nehmen */-> Wie versuchst du das? – Stultuske

Antwort

2

In letzten for-Schleife in Ihrem Programm haben Sie:

for(i=0; i <= array.length; i++) 

Es soll ich würde

for(i=0; i < array.length; i++) 

auch geändert werden vorschlagen, wenn Sie die Argumente den richtigen Weg passieren zu überprüfen (Besonders wenn Sie IDE verwenden, müssen Sie sie so weitergeben, wie es Ihre IDE erfordert), denn wenn sie nicht richtig gelesen werden, kann dies in Ihrem Programm ArrayIndexOutOfBoundsException verursachen. Ich empfehle Ihnen, zunächst den Inhalt von Arrays zu drucken, um zu prüfen, ob sie korrekt mit Daten gefüllt sind, die Sie in ihnen speichern möchten, um sicherzustellen, dass alles ordnungsgemäß ausgeführt wird.

+0

im mit Eclipse IDE .Die Befehlszeilenargumente drucken einwandfrei. .is zeigt den gleichen Fehler bei Netbeans. –

+0

auch wenn ich 2 oder irgendeine andere Nr. Passiere. von Befehlszeilenargumenten funktioniert es einwandfrei und druckt den ersten Teil der if-Klausel und gibt "error" aus. –

+0

Haben Sie versucht, <= bis

0

Wie Sie versuchen dann drei Kommandozeilenargumente zu übernehmen:

array.length = 3, wobei Indizes von 0, 1 und 2 laufen

In letzter for-Schleife des Programms Sie haben:

for (i = 0; i < = array.length; i ++)

Nun, für i = 3 haben wir 3 < = array.length als wahr und wenn Sie versuchen,

zuzugreifen

Array [3] in Ihrer for-Schleife Ausnahme ausgelöst wird. Um

Änderung folgen

zu vermeiden (i = 0; i < array.length; i ++)

Verwandte Themen