[Progra] probleme beim array

[Progra] Programmierung
[DSAL] Datenstrukturen und Algorithmen
[SWT] Softwaretechnik
[DB] Datenbanken und Informationssysteme

probleme beim array

Beitragvon paco89 » 28.03.11 15:25

hey,
hab folgendes getippt und irgendwie zeigt eclipse ne fehlermeldung an. also hier der code:

public class lernenEclipse {

public static void main (String [] args) {
int zahlenfeld [];
zahlenfeld = new int [10];

for (int i=0; i<=10; i++){
zahlenfeld[i] = i*i;
}

System.out.println("Quadratzahlen:");

for (int i=1; i<=10; i++){
System.out.println (i + "^2 = "+ zahlenfeld [i]);
}


}
}



lerne grad zu programmieren. und bin beim thema datenfelder "array"....kann mir jmd. sagen, wo mein fehler ist?


lg
paco89
 
Beiträge: 115
Registriert: 05.12.10 05:04

Re: probleme beim array

Beitragvon C-Otto » 28.03.11 15:28

Ich habe mir nur die ersten paar Zeilen von deinem Beitrag durchgelesen. Eine Fehlermeldung ist nicht nur dafür da, einfach zu existieren, sondern enthält in der eigentlichen Meldung auch hilfreichen Text. Es wäre schon sehr praktisch, wenn du diesen Text mit uns teilen könntest.
Dr. rer. nat. Carsten Otto
http://verify.rwth-aachen.de/otto/
Benutzeravatar
C-Otto
 
Beiträge: 568
Registriert: 10.08.06 00:20
Wohnort: Schwalbach am Taunus
Studiert seit: fertig
Anwendungsfach: BWL

Re: probleme beim array

Beitragvon paco89 » 28.03.11 15:30

sry, hab s vergessen...also hier die fehlermeldung:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at lernenEclipse.main(lernenEclipse.java:9)
paco89
 
Beiträge: 115
Registriert: 05.12.10 05:04

Re: probleme beim array

Beitragvon oxygen » 28.03.11 15:36

Also was sagt die Fehlermeldung übersetzt? 10 ist außerhalb der Array Grenze. Jetzt schau dir mal die Schleife an.















hint: i<10
oxygen
 
Beiträge: 1054
Registriert: 16.12.05 23:05
Wohnort: Bergheim
Studiengang: Informatik (Dipl.)
Studiert seit: fertig
Anwendungsfach: Medizin

Re: probleme beim array

Beitragvon Coolcat » 28.03.11 15:39

So...erstmal den Code richtig einrücken und in Code-Tags setzen (einfach [*code]....[/*code] ohne die Sternchen):

Code: Alles auswählen
public class lernenEclipse {
   public static void main (String [] args) {
      int zahlenfeld [];
      zahlenfeld = new int [10];

      for (int i=0; i<=10; i++) {
         zahlenfeld[i] = i*i;
      }

      System.out.println("Quadratzahlen:");

      for (int i=1; i<=10; i++) {
         System.out.println (i + "^2 = "+ zahlenfeld [i]);
      }
   }
}


Der Fehler ist das deine erste Schleife von 0 bis 10 läuft, dein Array aber nur 10 Elemente hat, also von 0 bis 9 läuft. Die zweite Schleife ist ebenfalls falsch. Arrayindices fangen immer bei 0 an, weil man sich dadurch häufig ein sonst nötiges +1 oder -1 spart.
My software never has bugs. It just develops random features.
Benutzeravatar
Coolcat
Promoter
 
Beiträge: 2574
Registriert: 28.11.05 21:26
Wohnort: Kohlscheid / Düsseldorf
Studiengang: Informatik (Dipl.)
Studiert seit: fertig
Anwendungsfach: BWL

Re: probleme beim array

Beitragvon paco89 » 28.03.11 16:03

okay, leute...danke....ich habe jetzt in den beiden schleifen statt i<=10 das hier benutzt : i<10.

es hat funktioniert.... vielen dank für die beantwortung meiner frage....;)
paco89
 
Beiträge: 115
Registriert: 05.12.10 05:04

Re: probleme beim array

Beitragvon paco89 » 28.03.11 16:57

könnte man das auch mit einer while-Schleife machen? bestimmt oder?

und meine 2. frage wäre noch: wieso muss ich ingesamt zwei Schleifen benutzen...kann mir das jmd. erklären? also wofür die erste und wofür die zweite?
paco89
 
Beiträge: 115
Registriert: 05.12.10 05:04

Re: probleme beim array

Beitragvon Coolcat » 28.03.11 17:49

könnte man das auch mit einer while-Schleife machen? bestimmt oder?

Du kannst jede for-Schleife in eine while-Schleife oder do-while-Schleife umwandeln und umgekehrt. Man nimmt halt immer das was gerade am besten passt.

Code: Alles auswählen
for (int i=0; i<10; i++) {
    // Anweisungen
}


ist identisch mit:

Code: Alles auswählen
int i=0;
while (i<10) {
    // Anweisungen
    i++;
}


wieso muss ich ingesamt zwei Schleifen benutzen...kann mir das jmd. erklären?

Die Schleifen hier brauchst du damit du das Array brauchst. Ich vermute mit dem kleinen Programm sollte gezeigt werden wie man Arrays benutzt.....das ist kein ernsthaftes Programm ;)

Das hättet es genauso getan....ohne Array:
Code: Alles auswählen
for (int i=0; i<10; i++) {
    int zahl = i*i;
    System.out.println (i + "^2 = "+ zahl);
}


Aber da man hier eben ein Array zeigen wollte speichert man die Werte eben zwischenzeitlich in einem Array. :)
My software never has bugs. It just develops random features.
Benutzeravatar
Coolcat
Promoter
 
Beiträge: 2574
Registriert: 28.11.05 21:26
Wohnort: Kohlscheid / Düsseldorf
Studiengang: Informatik (Dipl.)
Studiert seit: fertig
Anwendungsfach: BWL

Re: probleme beim array

Beitragvon adnia » 28.03.11 17:50

Also zu den While-Schleifen:

Code: Alles auswählen
// x, y seien irgendwelche Konstanten
int i;
for (i = x; i < y; i++) { ... }


kannst du äquivalent umschreiben:

Code: Alles auswählen
// x, y seien wieder irgendwelche Konstanten
int i = x;
while (i < y) {
    ...
    i++;
}


Dann kannst du dir überlegen, dass das auch für i <= y oder jede andere Bedingung funktionieren wird.


edit: Mist, zu langsam. ;)
adnia
 
Beiträge: 19
Registriert: 17.08.10 01:19
Studiengang: Informatik (B.Sc.)
Studiert seit: WS 09/10
Anwendungsfach: E-Technik

Re: probleme beim array

Beitragvon paco89 » 28.03.11 18:37

okay, danke...
paco89
 
Beiträge: 115
Registriert: 05.12.10 05:04

Re: probleme beim array

Beitragvon theTux » 28.03.11 18:54

Coolcat hat geschrieben:
Code: Alles auswählen
for (int i=0; i<10; i++) {
    // Anweisungen
}


ist identisch mit:

Code: Alles auswählen
int i=0;
while (i<10) {
    // Anweisungen
    i++;
}


Ich schalte mal kurz den Klugscheißermodus an:
Um ein wirklich identisches Programm zu schreiben, bräuchtest du noch ein paar Klammern, etwa so:
Code: Alles auswählen
{
    int i=0;
    while (i<10) {
        // Anweisungen
        i++;
    }
}

Im Normalfall macht das keinen Unterschied, aber die Variable i existiert nur während der for-Schleife und überdeckt ggf. vorher deklarierte Variablen mit gleichem Namen. Ganz böse Falle, die stundenlanges Fehlersuchen nach sich ziehen kann...

So, genug Klugschiss für heute :-)
Stur lächeln und... oh, falscher Pinguin.
Benutzeravatar
theTux
 
Beiträge: 577
Registriert: 15.01.06 16:41


Zurück zu Praktische Informatik