Portal > Foren > Java > Allgemeine Java-Programmierung > Array als Parameter und Exception
Antwort
 
Themen-Optionen
Alt 23.05.2005, 14:25 Nach oben    #1
punachino
Gast
 
Beiträge: n/a
Standard Array als Parameter und Exception

Meine Quelletext :

PHP-Code:
/*
 * Created on 23.05.2005
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package Übung08_0;

/**
 * @author tran
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class Matrix {
    static 
int [][] arr=new int[2][3];
    static 
int [] puka=new int[2];
    public static 
void main(String[] args) {
        
        for(
int i=0;i<arr.length;i++)
        {
            for(
int j=0;j<arr[i].length;j++)
                
arr[i][j]=StdInput.readInt("Geben Sie die Wert von a["+i+"]"+"["+j+"]"+"ein :");
        }
         
         
ausgeben();//Aufrufen methode ausgeben
         
zeilensumme(arr);//Aufrufen methode Zeilensumme mit Parameter arr
         
spaltennumme(arr);//Aufrufen methode Spaltennumme mit Parameter arr
        

    
}
    static 
void ausgeben()
    {
        for(
int i=0;i<arr.length;i++)
        {
            for(
int j=0;j<arr[i].length;j++)
                
System.out.print(arr[i][j]+"\f");
            
System.out.println("\b");
        }
    }
    
//die Methode, die die Matrix als Parameter übergeben bekommen und und dann die Zeilensummen
    //auf den Bilschirm ausgeben
    
static void zeilensumme(int[][]arr)
    {
        for(
int i=0;i<arr.length;i++)
        {
            
int zeilensumme=0;
            for(
int j=0;j<arr[i].length;j++)
            {
            
zeilensumme=zeilensumme+arr[i][j];
            }
            
System.out.println("Die Summe von Zeilen "+i": "+zeilensumme);
        }
    }
//    die Methode, die die Matrix als Parameter übergeben bekommen und und dann die Spaltensummen
//auf den Bilschirm ausgeben
    
static void spaltennumme(int[][]arr)
    {
        
        for(
int j=0;j<arr[j].length;j++)
        {
            
int spaltennumme=0;
            for(
int i=0;i<arr[j].length;i++)
            {
                
spaltennumme=spaltennumme+arr[i][j];
            }
            
System.out.println("Die Summe von Spalten"+j+": "+spaltennumme);
        }
            
    }
    

die folgende Mitteilung entsteht :

Zitat:
Geben Sie die Wert von a[0][0]ein :
1
Geben Sie die Wert von a[0][1]ein :
1
Geben Sie die Wert von a[0][2]ein :
1
Geben Sie die Wert von a[1][0]ein :
1
Geben Sie die Wert von a[1][1]ein :
1
Geben Sie die Wert von a[1][2]ein :
1
1 1 1 
1 1 1 
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at Übung08_0.Matrix.spaltennumme(Matrix.java:52)
at Übung08_0.Matrix.main(Matrix.java:2
Wie kann ich diese Exception verhindern ?
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 23.05.2005, 15:47 Nach oben    #2
Sesselkleber
 
Benutzerbild von sparrow
 
Registriert seit: 17.01.2005
Beiträge: 575
Standard

Also:

Code:
static int [][] arr=new int[2][3];
legt ein 2-dimensionales an.

Kleinster möglicher Wert arr[0][0], größter möglicher Wert. arr[1][2]

Deine Ausgabe deutet darauf hin, ohne den Code näher anzusehen, dass deu versuchst auf Array arr[2][1] als nächstes zuzugreifen. Dieses Array ist aber nicht existenz.

Gruß
Sparrow
sparrow ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 25.05.2005, 02:23 Nach oben    #3
Benutzer
 
Registriert seit: 25.10.2004
Beiträge: 38
Standard

hallo,

du hast da zwei fehler in deiner spaltensumme funktion:

der erste ist: in der zweiten for-schleife, darfst du nicht wieder bis "i < arr[j]" iterrieren, da du dieses schon in der äußeren tust.

der zweite ist: in der äußeren schleife hast du folgendes stehen:

Code:
        for(int j=0;j<arr[j].length;j++)
        {...
arr[3].length ergibt ja 2, da du ja drei Spalten hast.
--> j wird also beim letzen durchgang den wert 2 annehmen. Diesen wert sezt er in arr ein --> arr[2] !!! <-- fehler, diesen wert gibt es nicht, da arr nur zwei zeilen hat, also nur arr[0] und arr[1]!

eine funktionierende Möglichkeit dieser funktion wäre:

Code:
    void spaltennumme(int[][]arr)
    {
        
        for(int j=0;j<arr[0].length;j++)
        {
            int spaltennumme=0;
            for(int i=0;i<arr.length;i++)
            {
                spaltennumme=spaltennumme+arr[i][j];
            }
            System.out.println("Die Summe von Spalten"+j+": "+spaltennumme);
        }
            
    }
alekz ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Suche Hilfe: Angebot und Nachfrage berechnen ljungi Plauderecke 6 17.12.2006 22:10
Array in Bezug auf ein anderes sortieren... code5 PHP-Programmierung 2 15.05.2006 15:56
[PERL] Parameterhandling bei Perl WarrenFaith Tutorials 0 01.03.2006 12:33
Ein Array in ein Array schreiben bacarni PHP-Programmierung 2 07.02.2006 14:24


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:38 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44