Array Implementation

Gast
Gast

Array Implementation

Beitrag von Gast » 11. Mär 2014 17:42

Kann mir jemand erklären wieso das hier nicht funktioniert?
int[] array = new int[2];

array[0] = 10;
array[1] = 20;

Ich bekomme da immer die Fehlermeldung ']' expected

TobiTobske
Mausschubser
Mausschubser
Beiträge: 58
Registriert: 15. Jan 2014 20:50

Re: Array Implementation

Beitrag von TobiTobske » 11. Mär 2014 18:04

Die Zuweisung von Werten in einem Array je nach Index funktioniert nur innerhalb einer Methode, wenn ich mich nicht irre.
Also z.B.:

Code: Alles auswählen

public void setValues(){
      array[0] = 10;
      array[1] = 12;
}	
Willst du ein Array mit festen Werten initialisieren, dann schreist du das so:

Code: Alles auswählen

int[] array = {10,12};

Gast
Gast

Re: Array Implementation

Beitrag von Gast » 11. Mär 2014 18:12

hmm ok danke für die Info.

Und wieso funktioniert folgendes nicht?

Code: Alles auswählen

public class test
{
    public double[] min;
    
    public test(double min)
    {
        min = {3.4,44.5,6.8,0.2,22.1,92.4,40.5,10.8,1.0,34.0};
    }
Da bekomme ich dann immer ein illegal start of expression

Noch eine Frage am Rande, die erste Angabe vom Datentyp bei der Array Deklaration gibt ja an welchen Datentyp das Array speichern kann, für was dient die Angabe vom Datentyp wenn man ein Array initialsiert, also z.b. new int[2]

Benutzeravatar
mmi1991
Computerversteher
Computerversteher
Beiträge: 349
Registriert: 20. Okt 2011 18:46
Wohnort: Hattersheim

Re: Array Implementation

Beitrag von mmi1991 » 11. Mär 2014 18:34

Sollte gehen:

Code: Alles auswählen

public class test
{
    public double[] min;
    
    public test()
    {
        min = new double[] { 3.4,44.5,6.8,0.2,22.1,92.4,40.5,10.8,1.0,34.0 };
    }
}
Das new double[] hat gefehlt. Außerdem würde in deinem Fall der Parameter min das Feld min überschatten, was zu einem Typfehler führt (der Versuch, ein double-Array an einen einzelnen double-Wert zuzuweisen, scheitert).
Gast hat geschrieben:Noch eine Frage am Rande, die erste Angabe vom Datentyp bei der Array Deklaration gibt ja an welchen Datentyp das Array speichern kann, für was dient die Angabe vom Datentyp wenn man ein Array initialsiert, also z.b. new int[2]
Die gibt an, für wie viele Elemente im Array Platz sein soll. new int[2] legt ein Array für zwei ints an, auf dessen Elemente du mit Index 0 oder 1 zugreifen kannst.
Ophasentutor SoSe 2014, WiSe 2015/16
Alle Angaben wie immer ohne Gewähr

Gast
Gast

Re: Array Implementation

Beitrag von Gast » 11. Mär 2014 18:58

Zur ersten Antwort:
Tatsächlich funktioniert so, also wenn man das Array direkt initialisiert dann geht auch
double[] min = new double[] { 3.4,44.5,6.8,0.2,22.1,92.4,40.5,10.8,1.0,34.0 };
Und wenn man das zu Beginn nur deklariert und dann später erst initialisiert muss man noch ein new double[] einfügen, liege ich mit dieser Feststellung jetzt so richtig?
Der Parameter ist an dieser Stelle natürlich so falsch da gehört natürlich dann double[] min hin.

Zur zweiten Antwort:
Das die Zahl in den Klammern die Anzahl der möglichen Elemente angibt ist mir klar, ich weiß jetzt nur nicht für was die beiden Angaben von den Datentypen beim Array stehen.
z.B. int[] array = new int[4]
Was ist jetzt der genaue Unterschiede zwischen dem ersten und zweiten int?

Benutzeravatar
mmi1991
Computerversteher
Computerversteher
Beiträge: 349
Registriert: 20. Okt 2011 18:46
Wohnort: Hattersheim

Re: Array Implementation

Beitrag von mmi1991 » 11. Mär 2014 19:34

Gast hat geschrieben:Und wenn man das zu Beginn nur deklariert und dann später erst initialisiert muss man noch ein new double[] einfügen, liege ich mit dieser Feststellung jetzt so richtig?
Ja.
Gast hat geschrieben:z.B. int[] array = new int[4]
Was ist jetzt der genaue Unterschiede zwischen dem ersten und zweiten int?
Ah, ok. Also das erste, "int[]" ist der Datentyp. Du sagst also nur aus, dass array mal auf ein Array von ints zeigen wird. Du sagst an dieser Stelle nicht, wie viele Elemente das Array mal haben wird, denn du kannst

Code: Alles auswählen

int[] a;
a = new int[1];
//a hat momentan nur ein Element
a = new int[2];
//a hat momentan jetzt zwei Elemente: Ein neues Array
machen. Bei der Deklaration ist also völlig egal, wie viel Elemente das Array haben wird. Du sagst dem Compiler nur: Das wird mal auf ein int-Array verweisen. Mit dem Ausdruck new int[Größe] legst du dann tatsächlich ein konkretes Array mit einer konkreten Größe an.
Ophasentutor SoSe 2014, WiSe 2015/16
Alle Angaben wie immer ohne Gewähr

Gast
Gast

Re: Array Implementation

Beitrag von Gast » 11. Mär 2014 20:51

Hmm ok dann habe ich das jetzt soweit verstanden, danke nochmals.
Aber wenn ich jetzt drüber nachdenke, dann ist doch das zweite int bei a = new int[1]; doch ziemlich unnötig, weil man doch an dieser Stelle sowieso nur den Datentyp angeben kann, den man schon bei der Deklaration von der Array Variablen vergeben hat, oder übersehe ich da was?

Benutzeravatar
SophiaLi1
Kernelcompilierer
Kernelcompilierer
Beiträge: 542
Registriert: 5. Jan 2014 11:48

Re: Array Implementation

Beitrag von SophiaLi1 » 11. Mär 2014 20:52

Du wirst dich wundern, es gibt sogar int [] a = new int[0]; und das braucht man auch manchmal, z.B. wenn man während der Laufzeit die Länge des Arrays verändern möchte und von Beginn an noch nicht genau weiß, wie lang es wird.

Gast
Gast

Re: Array Implementation

Beitrag von Gast » 11. Mär 2014 21:02

das mit dem ersten und zweiten int folgt den standardregeln bzgl. der initialisierung von objekten. du könntest statt der deklarierten klasse (erstes int[]) auch nen beliebige subtyp (zweites int[]) initialisieren. bei arrays gibts glaub ich keinen. das hält dich aber nicht davon ab eigene, neue subtypen zu schreiben, welche sich das dann zu nutze machen...

Gast
Gast

Re: Array Implementation

Beitrag von Gast » 11. Mär 2014 21:06

ah ok also einfach eine Regel die man stupide anwenden sollte.
@SophiaLi1
Mir ging es jetzt darum, dass ja sowas wie
int[] array;
array = new double[1]
nicht funktioniert

Benutzeravatar
SophiaLi1
Kernelcompilierer
Kernelcompilierer
Beiträge: 542
Registriert: 5. Jan 2014 11:48

Re: Array Implementation

Beitrag von SophiaLi1 » 11. Mär 2014 21:09

Gast hat geschrieben: Mir ging es jetzt darum, dass ja sowas wie
int[] array;
array = new double[1]
nicht funktioniert
Achso, hab das nicht gelesen :D

Antworten

Zurück zu „Archiv“