Array länge

Hallo,

ich habe ein Problem mit einem Array.
undzwar will ich die länge eines Arrays mit ‚int l = array[].lenght;‘ herausfinden. Nur das problem ist, dass er das Array als Class erkennt.
was mache ich da denn falsch? Bitte helft mir.

Mfg. JanF

Hallo,

will ich die länge eines Arrays mit ‚int l =
array[].lenght;‘ herausfinden.

int l = array.length;

Gruß
Heavy

int l = array.length;

das funktioniert auch nicht.
Fehlermeldung:

cannot find symbol
symbol: variable array
localisation: class test.Main

cannot find symbol
symbol: variable length
localisation: class array

int l = array.length;

das funktioniert auch nicht.
Fehlermeldung:

cannot find symbol
symbol: variable array
localisation: class test.Main

Du musst schon eine Variable namens „array“ anlegen, wenn du auf „array.length“ zugreifen willst. Das sollte sich doch wohl irgenwie von selbst verstehen. Oder woher soll dein Computer wissen, welche Array-Länge er da ausgeben soll?

Nochmal von vorn und ganz langsam:
Hier ist ein Minimal-Beispiel:

import java.util.Random;

public class ArrayLengthTest {

 public static void main(String[] args) {

 // Integer-Array anlegen mit zufaelliger Laenge zwischen 0 und 1000
 int zufallszahl = new Random().nextInt(1000);
 int[] myArray = new int[zufallszahl];

 // Arraylaenge feststellen und ausgeben auf Konsole
 int laenge = myArray.length;
 System.out.println("Array-Laenge: " + laenge);
 }

}

Du musst schon eine Variable namens „array“ anlegen, wenn du
auf „array.length“ zugreifen willst.

das hab ich auch, dachte das würde sich von selbst verstehen

int laenge = myArray.length;

das problem ist aber, dass der ‚myArray‘ als klasse sieht, und nicht als array.

das problem ist aber, dass der ‚myArray‘ als klasse sieht, und
nicht als array.

Schau dir doch einfach den Quelltext an, den ich dir gerade gepostet habe. Das ist eine komplette Klasse die kompiliert und funktioniert.

Speichere doch mal den kompletten von mir geposteten Quelltext in einer Datei namens „ArrayLengthTest.java“ ab. Die sollte sich dann sowohl kompilieren als auch starten lassen. Kriegste das hin?

das funktioniert. nur, wieso erkennt der mein array als class

hallo

mische mich mal ein…

kaffeesudles - vermutlich hast du einen fehler im programm ]:->

schon mal auf die idee gekommen, den RELEVANTEN codeteil zu posten? und bitte kein komplettes listing - das liest kein schwein. dann kann dir vielleicht auch jemand ohne hellseherische begabungen helfen.

lg
erwin

hier der Code (ich hoffe das ihr so Klassen wie ‚oft‘ oder ‚meal‘ nicht braucht, denn die sind fehlerfrei):

import javax.swing.JOptionPane;

public class Main {

 public static void main(String[] args) {

 int c = 0;
 int[] cnumb = new int[101];
 for (c = 1; c 

Moin,

Dein cmeal.length wird nicht erkannt, weil Dein Array an dieser Stelle gar nicht bekannt ist.
Du deklarierst und initialisierst cmeal innerhalb einer if-Abfrage und nur dort ist diese Variable verfügbar.
Sobald Du die Abfrage verlässt (was Du in Deinem Fall ja tust), lässt sich nicht mehr auf diese Variable zugreifen.
Du musst also eine lokales Array für die gesamte Methode anlegen:

import javax.swing.JOptionPane;

public class Main {

public static void main(String[] args) {

meal[] cmeal; // hier lokales Array deklarieren
int c = 0;
int[] cnumb = new int[101];
for (c = 1; c // das Array initialisieren
cmeal[c] = oft.nM();
cmeal[c].cnumber = cnumb[(c + 1)];
} else {
break;
}
}
}

a = oft.q();
if (a == 0) {
String e = oft.i(); // oft.i ist bei mir das
gleiche wie JOptionPane.showInputDialog()

int l = cmeal.length; // das Problem sollte nicht mehr bestehen
}
}
}

Gruß,
Puni

Das ist schon klar dass das nicht geht. Zu dem Zeitpunkt wo du auf dein cmeal-Array zugreifst, ist dieses gar nicht mehr gültig. Variablen sind in Java - wie in fast allen anderen Sprachen auch - nur innerhalb ihres umschließenden Blocks gültig.

Du erstellst dein Array innerhalb eines if-Blocks und nur innerhalb diesem ist die Variable gültig.

Ich hab mal deinen Quelltext um Zeilennummern ergänzt:

01 import javax.swing.JOptionPane;
02 
03 public class Main {
04 
05 public static void main(String[] args) {
06 
07 int c = 0;
08 int[] cnumb = new int[101];
09 for (c = 1; c 

Das bedeutet, dass du dein Array in Zeile 20 definierst, aber ab Zeile 23 ist sie nicht mehr gültig, da dann der umschließende if-Block aus ist.

Du musst deine Variable schon viel früher definieren, auf jeden Fall vor Zeile 14, denn erst dann ist sie im selben Code-Block wie dein Zugriff in Zeile 34.

AHHHHHH…,
darauf hab ich garnicht geachtet.
Jetzt funktioniert es.
Vielen Dank feur eure bemühungen.
Gruß
JanF

Hallo,

ich habe ein Problem mit einem Array.
undzwar will ich die länge eines Arrays mit ‚int l =
array[].lenght;‘ herausfinden. Nur das problem ist, dass er
das Array als Class erkennt.
was mache ich da denn falsch? Bitte helft mir.

Hallo Jan,

Ich würde mal sage „Array“ ist ja auch eine Klasse…

Meines Wissens kannst du die länge mit array.length anzeigen lassen bzw. in einen inteager reinschreiben!

Viele Grüße von:
deinem Bruder

Jetzt sind mir zwar schon wieder deconstruct und Puni zuvorgekommen (…) aber du hättest mich ja auch ruhig mal fragen können, du siehst mich ja jeden tag ziemlich oft…

dann hattest du deine Lösung schneller!

Dein Bruder

PS:
Noch ein Tipp von mir an dich und alle anderen, die grade mit Java anfangen:

  1. Geht die sache erst mal langsam an und fangt nicht gleich mit (zu) komplizierten sachen an, sondern „vertieft“ erst mal die grundlagen, auf denen ja die ganzen komplexen Sachen aufbauen…

Ok, und jetzt der tipp, der für dich gedacht ist jan:

  1. Wenn du einen Fehler hast, geh erst mal den ganzen abschnitt durch, wenn du keine Lösung findest, geh halt von angang an alles durch (wenn das Prögramm nicht viel größer ist als der Fehler)…
    GANZ genau kann ich dir morgen früh ja erklären, wie ich in C++ vorgehe (is find ich besser als java…).

Ne alternative Is natürlich auch Lern erst C, dann C++ und wenn du C++ kannst, lernst du Java in 2 Wochen (wenn es dich dann noch interressiert) auf jeden fall fällts dir dann nich mehr schwer…

ok, da mir jetzt nichts mehr einfällt, womit ich dich noch mehr „beschäftigen“ kann noch ein kleiner hinweis falls du einen rechtschreibfehler findest:
Du darfst ihn behalten!!!^^

Und (falls) du was gelernt haben solltest, darfst du es mit nach Hause nehmen und ggf. über deinem computer an die wand hängen…

________________________________________________________________

W#sst§n Si§, dass Tastat#rtr§ib§r v?llig \berfl\ssig sind?

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]