Java will mir den Quelltext nich zu Bytecode Compilieren

ocsme

Top Contributor
Hallo zusammen,

der von mir benutze Quellcode stammt aus dem Buch "Programmieren lernen mit Java" von GalileoComputing!
So hier mal der Quellcode.

Wenn ich das Programm richtig verstanden habe sollen wir einen Parameter eingeben über die Konsole der wird gleich dem Radius gesetzt.
Dann berechnen wir anhand des Radius eben die Fläche und den Umfang des Kreises richtig oder falsch?

PS: Anfänger !!! 😳


Java:
public class kreis {
	public static void(String[] args) {
		double radius;
		double umfang, inhalt;
	
		radius = Double.parseDouble(args[0]);
		umfang = 2.0 * 3.1415926 * radius;
		inhalt = 3.1415926 * radius * radius;
		
		System.out.print("Umfang: ");
		System.out.println(umfang);
		System.out.print("Flaeche: ");
		System.out.println(inhalt);
	}
}

So nun würde ich das ganze sehr gerne Compilieren also zu sogenannten Bytecode machen wird ja mit dem Java-Interpreter Übersetzt :bae: anders hätten wir ausführbare Datei (Binärcode).

Doch er bringt diesen Fehler in der Shell:

Code:
javac kreis
error: Class names, 'kreis', are only accepted if annotation processing is explicitly requested
1 error

Wieso akzeptiert er den Name nicht?

Danke im voraus.

Liebe Grüße
 
Zuletzt bearbeitet von einem Moderator:
Läuft Danke 😀

Außerdem hab ich die main vergessen 🙁 😀

public static void main(String[] args) {

Doch jetzt kommt immer noch der Fehler hier:

Code:
 java kreis
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
	at kreis.main(kreis.java:6)
 
Zuletzt bearbeitet:
Das wird nicht weiter helfen. Mit dem Wissen dass man ein Element eines Arrays ansprechen will, dessen Position ausserhalb der Länge dieses Arrays liegt ist ja nur die Hälfte des Problems.
Code:
radius = Double.parseDouble(args[0]);
args ist das Array und es wird versucht auf das erste Element (Position '0') zuzugreifen. Vollkommen korrekt. Natürlich nur wenn auch mindestens ein Element im Array vorhanden ist. Denn ein Array kann auch die Länge '0' haben (Die Länge lässt sich übrigens mit arrayName.length abfragen). Also keine Elemente enthalten. Eine gültige Position (oder auch Index genannt) eines Arrays muss immer >= 0 UND < arrayName.length sein.
Wenn also die Länge '0' ist, gibt es keinen gültigen Index. Jeder Versuch eines Zugriffs wird eine ArrayIndexOutOfBoundsException liefern.

Wie gesagt, das ist aber nur der erste Teil der Lösung. Der zweite ist zu Wissen, warum dieses Array keine Elemente enthält:

Das String Array (meistens args genannt), das beim Start eines Java Programms an die main() Methode übergeben wird, stellt die Argumente dar mit denen dieses Programm aufgerufen wurde. z.B.
Code:
java MeinProgramm Argument1 Argument2 Argument3
Hier würde das args Array der main() Methode drei Elemente (String Objekte) enthalten: args[0]="Argument1" args[1]="Argument2" args[2]="Argument3".
Als Wiederholung: Gültige Indeces sind hier: '0', '1', '2' Ein Versuch das Element an Index '3' anzusprechen führt zur bekannten ArrayIndexOutOfBoundsException.
 
Zuletzt bearbeitet:
Leider verstehe ich hier nur Bahnhof...
wer mal weiter mit dem Buch arbeiten vielleicht komme ich später ja drauf! Derzeit ist es für mich nicht möglich :/
Danke im nochmals 🙂

LG
 
Du versuchst, einen Parameter zu parsen, den du niemals übergibst. "args[0]" ist hier "null", weil du nichts übergibst. Wie oben schon gesagt, musst du, wenn du das Programm ausführst, einen Parameter hinzuschreiben.

Code:
java kreis 40
 
Zuletzt bearbeitet:
Leider verstehe ich hier nur Bahnhof...
wer mal weiter mit dem Buch arbeiten vielleicht komme ich später ja drauf! Derzeit ist es für mich nicht möglich :/
Danke im nochmals 🙂

LG

Der erste Teil den ich versucht habe zu erklären ist der grundlegende Umgang mit Arrays. Gehört mit zum Handwerkszeug. Müsste auch bei so ziemlich allen Tutorials und Lehrbüchern am Anfang vorkommen.
Im zweiten Teil habe ich versucht zu erklären was das
Code:
String[] args
in der Einstiegsmethode
Code:
public static void main(String[] args)
eines Java Programms bedeutet und wie man damit umgehen kann.

Übung macht den Meister und es gibt wirklich einige gute Tutorials/Bücher zum Lernen. Viel Glück und viel Spass.
 
sry wusste nicht wo ich den alten beitrag bearbeite 🙁

so also es kommt immer noch der Fehler auch wenn ich in der Konsole das eingebe:
java kreis 10

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at kreis.main(kreis.java:6)

Also so langsam hab ich das Gefühl ich bin zu blöde :/
ich hab vor einigen Monaten mal mit C angefangen und da hat es besser geklappt !!! Doch ich will kein C sondern Java lernen / können! bzw muss es.


_________
Das kommt bei allem was ich tue :/
verstehe es nicht 😀
 
Zuletzt bearbeitet:
Danke 😀

hab es 🙂

java kreis 1 1
Umfang: 6.2831852
Flaeche: 3.1415926


Ja es fehlen Grundlagen. Eigentlich fehlt noch alles ...
Hab ja erst angefangen das Beispiel habe ich aus einem Buch. Wollte ja nur haben das es funktioniert 🙂

Danke für eure Hilfe 🙂

Liebe Grüße
 
Gibt es den eine Erklärung zu dem Bezeichner System.out.print(ln)???
Denn ich verstehe nicht wie er das erzeugt.

Wenn ich das hier eingebe:
System.out.print("bZahl =");
System.out.println(bZahl);

Dann steht dort
gdhgdhj@ewrwtret-PC:~$ java Variablen1
bZahl =28

Ich dachte eher er würde eine Zeile runter springen und dann den Wert der Definierten Variable ausgeben also so:
gdhgdhj@ewrwtret-PC:~$ java Variablen1
bZahl =
28

Wieso ist das nicht so?
 
Beachte

print

und

println

Das eine macht einen Zeilenvorschub das andere nicht.

Alles im JavaDoc nachzulesen. Google liefert alle Ergebnise.
 
Zuletzt bearbeitet:
Ahhhh JavaDoc kommt mir bekannt vor ...
da gibt es doch ein Link wo man wirklich alles findet 😀 so eine Art Bibliothek
weist du was ich meine und hast du ein Link?
Finde es leider nicht auf der Seite :/
 
Leider hatte ich noch keinen Erfolg etwas über args herauszubekommen :/
Ich nehme an das soetwas auch in Java ist eine Insel steht oder?
Wenn ja werde ich damit mal als nächstes weiter machen 🙂

LG
 

Zurück
Oben