2017-02-01 10 views
0

Ich machte ein Programm, um Zahlen in zweidimensionalen Array zu akzeptieren und die größte und kleinste Nummer zu finden. Aber wenn ich mu Eingänge betreten, zeigt es Fehler in der zweiten if-Anweisung zu sagen:Array-Index außerhalb der Ausnahme für Maximum und Minimum Programm

"Array-Index außerhalb des gebundenen Ausnahme"

import java.util.Scanner; 
public class DDA_MaxMin 
{ 
    public static void main(String args[]) 
    { 
     Scanner in = new Scanner(System.in); 
     int ar[][] = new int[4][4]; 
     int a,b,c=0,d=0; 
     for(a=0;a<4;a++) 
     { 
      for(b=0;b<4;b++) 
      { 
       System.out.println("Enter the numbers in the matrix "+a+" "+b); 
       ar[a][b]=in.nextInt(); 
      } 
     } 
     c=ar[0][0]; 
     d=ar[0][0]; 
     for(a=0;a<4;a++) 
     { 
      for(b=0;b<4;b++) 
      if(c>ar[a][b]) 
      c=ar[a][b]; 
      if(d<ar[a][b])   
      d=ar[a][b]; 
     } 
     System.out.println("The greatest number is "+d); 
     System.out.println("The smallest number is "+c); 
    } 
} 

Antwort

4

Die for-Schleife ohne { ist nur gültig, für nächste Zeile oder nächste Anweisung.

for(b = 0; b < 4; b++) 
if(c>ar[a][b]) 
    c=ar[a][b] 

nach diesem b Wert ist 4.

und die if-Anweisung danach ist außerhalb der for-Schleife daher die Out-of-Bounds-Ausnahme.

Schließen Sie sie in geschweiften Klammern.

for(a=0;a<4;a++) 
    { 
     for(b=0;b<4;b++){ 
     if(c>ar[a][b]) 
     c=ar[a][b]; 
     if(d<ar[a][b])   
     d=ar[a][b]; 
     } 
    } 
+0

Und Sie sollten a und b nicht als int deklarieren, wenn Sie es in den Schleifen verwenden. – IQV

+0

Danke ... es löste das Problem – Arpit

1

Hey ther verpassten Sie die geschweifte Klammer für die zweite für den richtigen Code wird

+1

'für (a = 0; a <4; a ++) { für (b = 0; b <4; b ++) { wenn (c> ar [a] [ b]) c = ar [a] [b]; if (d

+0

Danke das Problem ist gelöst – Arpit

1

das Problem ist mit dem zweiten for Schleife, die mit variabler b beschäftigt. Es fehlen Klammern. Ändern Sie ihn auf:

for(a=0;a<4;a++) { 
    for(b=0;b<4;b++) { 
     if(c>ar[a][b]) 
      c=ar[a][b]; 
     if(d<ar[a][b])   
      d=ar[a][b]; 
    } 
} 
+0

Danke das Problem ist gelöst – Arpit

1

`

public static void main(String args[]) 
    { 
     Scanner in = new Scanner(System.in); 
     int ar[][] = new int[4][4]; 
     int a,b,c=0,d=0; 
     for(a=0;a<4;a++) 
     { 
      for(b=0;b<4;b++) 
      { 
       System.out.println("Enter the numbers in the matrix "+a+" "+b); 
       ar[a][b]=in.nextInt(); 
      } 
     } 
     c=ar[0][0]; 
     d=ar[0][0]; 
     for(a=0;a<4;a++) 
     { 
      for(b=0;b<4;b++) 
      { 
      if(c>ar[a][b]) 
       c=ar[a][b]; 
      if(d<ar[a][b])   
       d=ar[a][b]; 
       } 
     } 
     System.out.println("The greatest number is "+d); 
     System.out.println("The smallest number is "+c); 
    }` 

Sie fehlen Klammern in der for-Schleife, wo Sie versuchen, die größte und kleinste ganze Zahl zu finden.

+0

Danke das Problem ist gelöst – Arpit

Verwandte Themen