java-forum.org
JBoss Seam
Alter Preis: 39,95 €
Jetzt: 0,00 €

zzgl. Versandkosten

Zurück   java-forum.org > Java - Programmierung > Java Basics - Anfänger Themen

Java Basics - Anfänger Themen Fragen zu Java-Grundlagen von Ein- und Umsteigern

Antwort     Ist dieses Thema erledigt?
Themen-Optionen Thema durchsuchen Ansicht
Alt 08.02.2010, 22:26   #1 (permalink)
Benutzer
Byte
 
Registriert seit: 19.06.2009
Beiträge: 42
Abgegebene Danke: 8
Erhielt 0 Danke für 0 Beiträge
Standard ArrayIndexOutOfBoundsException

Hallo, ich will eine Vereinigung von zwei Mengen. Mein Program gibt Error wie folgendes:


7
6
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
at Kapitel3.Menge.addElem(Menge.java:21)
at Kapitel3.Menge.vereinigung(Menge.java:50)
at Kapitel3.Menge.main(Menge.java:79)

Mein Code ist so:Was mache bei Vereinigung(Menge menge) als Fehler?
Java Code: Quelltext in neuem Fenster öffnen
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
public class Menge implements Services{
    
    private int anzahl;
    private int dimension;
    private int[] element;
    
    Menge(int dimension){
        this.dimension=dimension;
        element=new int[dimension];
        anzahl=0;
    }
    
    @Override
    public boolean addElem(int value) {
        if(this.isElem(value)!=-1){
            return true;
        }
        else 
            element[anzahl]=value;
            anzahl++;
                
        return true;
    }
    @Override
    public int isElem(int value) {
        int index=0;
        for(int i=0; i<element.length;i++){
            if(element[i]==value){
                index=i;
            break;}
            else {
                index=-1;
            }}
        return index;
    }
 
    
    @Override
    public int numberOfElem() {
        
        return anzahl;
    }
    
    public Menge vereinigung(Menge menge){
        Menge menge1= new Menge(4);
        if(menge.numberOfElem()>menge1.numberOfElem()){
        for(int i=0; i<menge.numberOfElem();i++)
            menge1.addElem(menge.element[i]);
            return menge1;}
            else
                for(int i=0;i<menge1.numberOfElem();i++)
                    menge.addElem(menge1.element[i]);           
        return menge;
        
    }
    public static void main(String args[]){
        Menge menge=new Menge(7);
        menge.addElem(1);
        menge.addElem(2);
        menge.addElem(3);
        menge.addElem(4);
        menge.addElem(5);
        menge.addElem(6);
        menge.addElem(7);
        Menge menge1=new Menge(8);
        menge1.addElem(1);
        menge1.addElem(2);
        menge1.addElem(3);
        menge1.addElem(4);
        menge1.addElem(9);
        menge1.addElem(10);
        System.out.println(menge.numberOfElem());
        System.out.println(menge1.numberOfElem());
        System.out.println(menge.vereinigung(menge1));
    }
}

Geändert von SlaterB (08.02.2010 um 22:36 Uhr) Grund: Java-Tags, Titel
stephanie ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 08.02.2010, 22:38   #2 (permalink)
Stammbenutzer
Kilobyte
 
Registriert seit: 08.12.2006
Beiträge: 255
Abgegebene Danke: 0
Erhielt 30 Danke für 28 Beiträge
Guck dir mal deine Methode public Menge vereinigung(Menge menge) an. Menge menge1 = new Menge(4); könnt etwas knapp werden in dem Array
__________________
Hi, my name is not Lance and i'm not an addict!
fassy ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 08.02.2010, 22:43   #3 (permalink)
Stammbenutzer
Megabyte
 
Registriert seit: 26.06.2009
Beiträge: 1.098
Abgegebene Danke: 14
Erhielt 149 Danke für 144 Beiträge
In der Methode vereinigung() instanzierst du ein neues Objekt menge, welches ein Array der Grösse 4 erstellt. Dann fügst du dieser Menge mehr als 4 Elemente hinzu, wodurch anzahl irgendwann 4 wird und element[anzahl]=value; einen Fehler wirft.
javimka ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 08.02.2010, 22:44   #4 (permalink)
Benutzer
Byte
Themenstarter
 
Registriert seit: 19.06.2009
Beiträge: 42
Abgegebene Danke: 8
Erhielt 0 Danke für 0 Beiträge
ich weiss, da ist problem. ich kann aber nicht abheben.
stephanie ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 08.02.2010, 22:47   #5 (permalink)
Stammbenutzer
Kilobyte
 
Registriert seit: 08.12.2006
Beiträge: 255
Abgegebene Danke: 0
Erhielt 30 Danke für 28 Beiträge
Erm, wie?

Wie wäre es z.B. mit:

Java Code: Quelltext in neuem Fenster öffnen
1
Menge menge1 = new Menge(this.numberOfElem() + menge.numberOfElem());

Das langt auf jeden Fall

Dann packste noch:

Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
    public String toString(){
        StringBuffer sb = new StringBuffer();
        sb.append(" = ");
        for(int i : element){
            sb.append(i);
            sb.append(",");
        }
        sb.deleteCharAt(sb.length()-1);
        return sb.toString();
    }

mit bei und kannst die ansehn was du so machst:
Java Code: Quelltext in neuem Fenster öffnen
1
2
3
System.out.println(menge.numberOfElem() + menge.toString());
System.out.println(menge1.numberOfElem()+ menge1.toString());
System.out.println(menge.vereinigung(menge1).numberOfElem() + menge.vereinigung(menge1).toString());
__________________
Hi, my name is not Lance and i'm not an addict!

Geändert von fassy (08.02.2010 um 22:49 Uhr)
fassy ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Alt 08.02.2010, 22:48   #6 (permalink)
Stammbenutzer
Megabyte
 
Registriert seit: 26.06.2009
Beiträge: 1.098
Abgegebene Danke: 14
Erhielt 149 Danke für 144 Beiträge
Mach doch die Menge so gross wie die Menge, die du als Argument erhalten hast.

Aber ich sehe eher ein prinzipielles Problem, wenn du deinen Mengen eine maximale Grösse mitgibst. Eigentlich sollten sie sich doch beliebig vergrössern können, oder nicht? Falls das so ist, dann verwende doch eine ArrayList<Integer> anstatt einem int[] array.
javimka ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Mit Zitat antworten
Antwort     Ist dieses Thema erledigt?

Lesezeichen

Latex Maths & Physics Editor ...

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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

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



Alle Zeitangaben in WEZ +1. Es ist jetzt 04:01 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.2
Thanks for Smilies by smilies.4-user.de