Seite 1 von 1

[Java] Brauche menschliche Debugger

Verfasst: 30.01.2009 23:05
von Mok
Servus!

Ich bin gerade dabei ein Java-Prog bezüglich Varialben zu schreiben, und wenn ich auf Build > Build File klicke, wird meine File vom Compiler debuggt (komisch, nich?) und dann hab ich 12 fehler in einer Zeile /:->
Liegt wohl an EINEM Fehler, der die anderen auch Auslöst... ich hab ihn nicht gefunden, könnt ihr mir helfen?

Code: Alles auswählen

/* * * * * * * * * * * * * * * * * * * *
 * @Name		Arrays_1_Grundlagen	   *
 * @Author		Wolfram Weingartner    *
 * @Description	Grundlagen der Arrays  *
 * * * * * * * * * * * * * * * * * * */
 
 // Vorwort:
 // Ein Array (Tabelle) ist eine Liste gleichartiger Elemente, die mithilfe von einem Index
 // angesprochen werden können.
 //  ____________________
 // | 2 | 18 | 5 |112| 4 |
 //  ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
 
 import java.util.Arrays;
 public class Arrays_1_Grundlagen {
 	public static oivd main (String[] args) {
 		int z;
 		
 		/* Deklaration */
 		int[] abc = new int[10];//Erstellt ein neues Array mit 10 Elementen (0-9)
 								//Länge = unbekannt, Typ = int
 								
 		byte[] def = new byte{14, 11, 22, 120};//Erstellt ein Array vom Typ byte mit
 											  //den Elementen 14, 11, 22 und 210
 											  
 		/* Zugriff auf Elemtente */
 		z = (int)(Math.random() * 4) + 1;
 		System.out.println("Array Nummer "+z+" beinhaltet den Wert "+def[z]);
 		abc[0] = 12;
 		abc[1] = 8;
 		
 		for (int i = 2; i < (abc.length - 2); i++){//Anm.: <Arrayname>.length gibt die Länge zurück
 			ar[i] = (int)(Math.random() * 12) + 1;
 			System.out.println("\nArray Nummer "+i+" beinhaletet den Wert "+ar[i]);
 		}
 		
 		/* Array sortieren */
 		//Arrays können mit dem Befehl Arrays.sort(<Arrayname>) sortiert werden
 		
 		for (int i = 0; i < abc.length; i++) {
 			System.out.println("\nArray 'abc' ungeordnet: "+ar[i]);
 		}
 		
 		Arrays.sort(abc)
 		for (int i = 0; i < abc.length; i++) {
 			System.out.println("\nArray 'abc' geordnet: "+ar[i]);
 		}
 		
 		/* Arraywerte gleichsetzen */
 		for (int i = 0; i < def.length; i++) {
 			System.out.println("\nArray 'def' Ursprung: "+def[i]);
 		}
 		
 		def[2] = abc[(int)(Math.random() * 9)+1];
 		def[5] = abc[4]
 		def[4] = abc[8]
 		
 		for (int i = 0; i < def.length; i++) {
 			System.out.println("\nArray 'def' Neu: "+def[i]);
 		}
 	}
 }
Fehlerlog:
http://images.roflcopter.net/image/1380.jpeg

MfG und thx im vorraus, Mok

Verfasst: 31.01.2009 01:07
von PMV
Da fehlen min. 3 Semikolons.
(Tipp: in der unteren hälfte)

MFG PMV

Verfasst: 31.01.2009 02:20
von ZeHa
public static oivd main (String[] args)
Wenn Du einen Editor mit Syntax Highlighting nutzt, dann müßte Dir hier eigentlich was aufgefallen sein...

Verfasst: 31.01.2009 12:03
von Mok
es liegt NICHT (nur) an ovid > void, sondern an

Code: Alles auswählen

byte[] def = new byte{14, 11, 22, 120}
das ist flasch. Man schreibt stattdessen

Code: Alles auswählen

byte[] def = {14, 11, 22, 120}
Aber trotzdem danke ;)

Verfasst: 12.02.2009 17:25
von shadow
Hallo Mok,

es gibt verschiedene Schreibweisen um ein Array zu initialisieren.

du könntest auch folgendermaßen schreiben (womit dein erster Ansatz richtig gewesen wäre):

Code: Alles auswählen

byte[] def = new byte[] {14, 11, 22, 120};
grüße

Verfasst: 13.02.2009 14:26
von Froggerprogger

Code: Alles auswählen

/* * * * * * * * * * * * * * * * * * * *
 * @Name      Arrays_1_Grundlagen      *
 * @Author      Wolfram Weingartner    *
 * @Description   Grundlagen der Arrays  *
 * * * * * * * * * * * * * * * * * * */
 
 // Vorwort:
 // Ein Array (Tabelle) ist eine Liste gleichartiger Elemente, die mithilfe von einem Index
 // angesprochen werden können.
 //  ____________________
 // | 2 | 18 | 5 |112| 4 |
 //  ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
 
 import java.util.Arrays;
 public class Arrays_1_Grundlagen {
    public static oivd main (String[] args) {
oivd => void

Code: Alles auswählen

       int z;
       
       /* Deklaration */
       int[] abc = new int[10];//Erstellt ein neues Array mit 10 Elementen (0-9)
                         //Länge = unbekannt, Typ = int
       byte[] def = new byte{14, 11, 22, 120};//Erstellt ein Array vom Typ byte mit
                                    //den Elementen 14, 11, 22 und 210
Arrayinitialisierung falsch, ... = new byte[] {14,...

Code: Alles auswählen

                                   
       /* Zugriff auf Elemtente */
       z = (int)(Math.random() * 4) + 1;
       System.out.println("Array Nummer "+z+" beinhaltet den Wert "+def[z]);
       abc[0] = 12;
       abc[1] = 8;
       
       for (int i = 2; i < (abc.length - 2); i++){//Anm.: <Arrayname>.length gibt die Länge zurück
          ar[i] = (int)(Math.random() * 12) + 1;
Array 'ar' gibt es gar nicht, wahrscheinlich Array 'abc' gemeint?

Code: Alles auswählen

          System.out.println("\nArray Nummer "+i+" beinhaletet den Wert "+ar[i]);
Array 'ar' gibt es gar nicht, wahrscheinlich Array 'abc' gemeint? Und: beinhaletet

Code: Alles auswählen

       }
       
       /* Array sortieren */
       //Arrays können mit dem Befehl Arrays.sort(<Arrayname>) sortiert werden
       
       for (int i = 0; i < abc.length; i++) {
          System.out.println("\nArray 'abc' ungeordnet: "+ar[i]);
Array 'ar' gibt es gar nicht, wahrscheinlich Array 'abc' gemeint?

Code: Alles auswählen

       }
       
       Arrays.sort(abc)
Semikolon!

Code: Alles auswählen

       for (int i = 0; i < abc.length; i++) {
          System.out.println("\nArray 'abc' geordnet: "+ar[i]);
Array 'ar' gibt es gar nicht, wahrscheinlich Array 'abc' gemeint?

Code: Alles auswählen

       }
       
       /* Arraywerte gleichsetzen */
       for (int i = 0; i < def.length; i++) {
          System.out.println("\nArray 'def' Ursprung: "+def[i]);
       }
       
       def[2] = abc[(int)(Math.random() * 9)+1];
Downcast bei Zuweisung von int-Wert an byte geht nur explizit, also: def[2] = (byte) abc[(int)...

Code: Alles auswählen

       def[5] = abc[4]
       def[4] = abc[8]
2x Semikolon und 2x expliziter Downcast.
Zudem 2x Laufzeitfehler: def[4] und def[5] gibt es gar nicht, da nur def[0]...def[3] definiert.

Code: Alles auswählen

       for (int i = 0; i < def.length; i++) {
          System.out.println("\nArray 'def' Neu: "+def[i]);
       }
    }
 }
Sieht fast aus wie eine Übungsaufgabe: Finden sie alle Fehler :wink:

Kleiner Tip am Rande: Die Elemente eines Arrays lassen dich auch schön mittels folgender Methode ausgeben:

Code: Alles auswählen

System.out.println(Arrays.toString(abc)); // liefert: [0, 0, 1, 1, 4, 7, 8, 9, 11, 12]