PCMasters Hardware Forum > Software > GFX, Webdesign und Programmierung > Seite 7 > Programmierprobleme / Java plz help

Im PC Forum registrieren


Produktsuche
IDEALO-PRODUKT-SUCHE
idealo preisvergleich
PCM News & Reviews
Antwort
 
 
Alt 05.06.2010, 15:50
Threadersteller
LordApophis
 
Unglücklich

Programmierprobleme / Java plz help



Hi,

ich versuche derzeit mich etwas in Programmierung mit Java einzufinden und habe da eini Probleme...kann sien dass dann weitere folgen, ist irgendwie unübersichtlich das ganze...ich werde sie nacheinander stellen wenn das vorige gelöst ist, denke das ist übersichtlicher und nachvollziehbarer

Das erste Problem:
Ich habe Arrays so verstanden das man damit Listen (eindimensional), Tabellen (zweidimensional) und ähnliche Strkuturen abbildne kann, ist das soweit richtig?

Weil auf dieser Annhame hab ich oflgenden Code geschrieben der leider nicht läuft:

Code:
public class arraysundschleifen {
    public static void schleife(int[]array)
    {
        for (int c=1;c<=array.length;c++)
        {
            System.out.println("Zahl an der Stelle "+c+": "+array[c]);
        }
    }
    public static void fuellen (int[]array)
    {
        for (int i=1;i<=array.length;i++)
        {
            array[i]=i+1;
        }
    }
    public static void main (String[]args)
    {
        int[] array=new int[10];
        fuellen(array);
        schleife(array);
    }
}
Eigentlich wollte ich eine Ausgabe erzeugen die so aussieht:
Zahl an der Stelle 1: 1
Zahl an der Stelle 2: 2
Zahl an der Stelle 3: 3
Zahl an der Stelle 4: 4
Zahl an der Stelle 5: 5
Zahl an der Stelle 6: 6
Zahl an der Stelle 7: 7
Zahl an der Stelle 8: 8
Zahl an der Stelle 9: 9
Zahl an der Stelle 10: 10

Aber Leider bekomme ich nur einen Fehler
Zitat:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at schleifenundarrays.fuellen(fakecode.java:14)
at schleifenundarrays.main(fakecode.java:20)
Hoffe jemand kann mir hierbei (und notfalls bei weiteren Sachen) helfen.
Alt Heute
Hardware Bot
Computer Informationen
 
Diese Werbung wird registrierten
Mitgliedern nicht angezeigt.
Werden Sie noch heute kostenlos Mitglied
auf PCMasters.de
Standard Weitere Informationen

 
Alt 05.06.2010, 21:55
Benutzerbild von LordOfThePings
LordOfThePings
 
Standard

Wenn ich das richtig in Erinnerung habe, werden die Array-Indizes in Java auch mit 0 begonnen, gehen also bei einem Array der Länge 10 von 0 bis 9.

ArrayIndexOutOfBounds spricht da auch dafür (der Index liegt mit 10 ja außerhalb des gültigen Bereichs 0-9).

Du müsstest in deinem Code also die Schleifen von 0 bis <Length (oder <= Length-1) laufen lassen.
 
Alt 06.06.2010, 23:15
Benutzerbild von ChiefAlex
ChiefAlex
 
Standard

nach GFX, Webdesign und Programmierung
 
Alt 06.06.2010, 23:15
Threadersteller
LordApophis
 
Standard

Hmm...nun gut, das mit 0 statt 1 und < statt <= hätt ich auch selber schaffen können...hatte das auch schonma wo gehört...weil bei der ihnteren Zahl hab ichs ja geschafft das zu beherzigen

Kann mir einer technisch und gleichzeitig verständlich erklären warum das so ist?^^


Oh, war ich im falschen Bereich? Garnich gemerkt...danke sir Chief sir

Geändert von LordApophis (06.06.2010 um 23:18 Uhr).
 
Alt 07.06.2010, 14:34
Benutzerbild von LordOfThePings
LordOfThePings
 
Standard

Meine Vermutung wäre, dass das mit der internen Verwaltung der Arrays zusammenhängt.
Java ist ja in vielen Dingen C-ähnlich. Dort werden Arrays als Zeiger auf die erste Speicheradresse angelegt (Die Länge wird in C nicht gespeichert, deswegen kann es da zum Überlauf kommen. Java speichert die Länge auch mit und kann deswegen eine ArrayIndexOutOfBoundsException werfen).

Code:
int[10] array;
ist also eigentlich ein Zeiger auf eine Adresse, z.B. 0xABCD.
Mit array[0] kann man jetzt auf das erste Element zugreifen, dabei wird der Wert in den Klammern zur Startadresse addiert. Intern wird das dann zu *(0xABCD + 0x0000).
array[1] ist dann das zweite Element, das liegt dann in *(0xABCD + 0x0001).

Genau genommen stimmt das jetzt nicht ganz, weil beim Zugriff natürlich auch die Breite jedes einzelnen Elements beachtet werden muss. Bei einem 32bit int sind das 4 Byte, also liegt array[1] eigentlich an *(0xABCD+0x0004). Das erledigt der Compiler aber automatisch, darum muss man sich also meistens nicht selber kümmern.
 
Alt 12.06.2010, 10:02
Threadersteller
LordApophis
 
Standard

Okay, das verstehe ich swoeti einigermaßen.

Danke schomma.

Ich bastel gerade an zweidimensionalen Arrays herum und melde mich bestimmt bald wenns da Schwierigkeiten gibt
hardware forum Neue Frage stellen?
Kurze Zusammenfassung der Frage:
Bitte wählen Sie eine Kategorie:
Mailadresse:
Ihre Frage:
Ihre Frage wird als Gast gespeichert. Sollte eine Antwort im Forum erfolgen, bekommen Sie diese per Email zugeschickt.


Antispam, bitte die folgende Aufgabe lösen: 
 
Um auf dieses Thema zu ANTWORTEN
bitte sich zuerst » hier kostenlos registrieren!!

Antwort

Tags: , , ,

Ähnliche Tags: , , , ,


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Asus EN8800 GTS wird gebremst need help plz NorbiHH Hardware Allgemein 6 17.06.2008 12:57
Java mit IE wizo666 Anwendungssoftware 1 21.03.2008 22:06
Welche Karte??? Help me PLZ :) wessie2k Grafikkarten 3 01.09.2007 00:48
DFI NF4 Ultra-D Prob !!! Need Help !!! plz !!! rAgE.Tom Mainboards 2 23.01.2007 15:50
HILFE ! !! ! Es geht fast garniX MEhR !!!!!!!PLZ HELP!!!! ReaSeR Hardware Allgemein 13 18.07.2004 20:01


Sie betrachten gerade: Programmierprobleme / Java plz help


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:46 Uhr.



Im PC Forum registrieren