Fragen über Fragen, main-Methode und Co.

R

RagnaroekC

Gast
Einen wunderschönen guten Tag,

ich habe ein paar Fragen im Bezug auf die main-Methode.
Gesucht und gefunden habe ich bei Google so einiges, so ganz schlau daraus werde ich leider nicht.

Die erste Frage ist, ist es korrekt, dass der Unterschied zwischen einem Aufruf und einem Übergabeparameter jender ist, dass der Aufrufparameter von Aufrufer bestimmt wird und der Übergabeparameter einer derer ist, die von z.B. Methoden übergeben werden?

Welche Rolle spielt der Übergabeparameter String args[] in der main Methode?
Ich habe gelesen, dass er wenn man das Programm aufruft, sofern ich das richtig verstanden habe, Parameter die man hinter den Aufruf schreibt mit in das Programm nimmt?
Wenn ja, wie sieht das aus? Kann ich dann einfach in meinem Programm auf args zugreifen?
Was würde in dem Fall args.length genau bedeuten?

Was würde passieren wenn ich mehrere Parameter hinter den Aufruf schreibe?
Und was würde dann wiederum mit args.length passieren?

Grüße,
Tim
 
S

SlaterB

Gast
hättest du bloß einen Computer mit dem du all das testen könntest, verschiedene Parameter, dann die Länge anschauen.. ;)

> Ich habe gelesen, dass er wenn man das Programm aufruft, sofern ich das richtig verstanden habe, Parameter die man hinter den Aufruf schreibt mit in das Programm nimmt?

du kannst doch nicht alles was du irgendwo liest, hinterfragen,
klingt das denn nicht plausibel/ deutlich?

--------

ich selbst wüßte den Unterschied zwischen Aufrufparameter und Übergabeparameter auch nicht,
warum möchtest du dich mit Benennungen aus verschiedenen Büchern aufhalten?
der nächste nennt es Methodenargumente bzw. es geht ja um die Main, also Programmargumente, auch Klärung nötig?

gut, du hälst das im Moment vielleicht für wichtigen unklaren Punkt: nein, ist es nicht,
eine Methode hat Parameter, Ende der Geschichte ;)
auch einer main-Methode kann man Parameter übergeben, fertig
 

ARadauer

Top Contributor
Welche Rolle spielt der Übergabeparameter String args[] in der main Methode?
Ich habe gelesen, dass er wenn man das Programm aufruft, sofern ich das richtig verstanden habe, Parameter die man hinter den Aufruf schreibt mit in das Programm nimmt?
ja man kann, wenn man das Programm von der Konsole startet Werte mitgeben
Wenn ja, wie sieht das aus? Kann ich dann einfach in meinem Programm auf args zugreifen?
ja klar,
Was würde in dem Fall args.length genau bedeuten?
???:L was heißt den lenght? Also es ist die länge des Arrays, die Parameter stehen dir als array zur verfügung

Was würde passieren wenn ich mehrere Parameter hinter den Aufruf schreibe?
Und was würde dann wiederum mit args.length passieren?
sie sind alle im array, die länge entspricht der anzahl...

Für mich hört sich das schwer nach Hausübung an... kann das sein?
 
R

RagnaroekC

Gast
Genauer gesagt sind es die ersten Übungsblätter einer Klausur..
Und bedauerlicher Weise ist der Professor da sehr, sehr kleinlich.
Das mag daran liegen, dass er eigentlich kein "Java Professor" ist sondern Digitale Bildbearbeitung und Auswertung gelernt hat... Man muss bei ihm auch den Standartkonstruktor hinschreiben. Soweit ich weiß braucht man das eigentlich nicht weil der automatisch erzeugt wird.
Wie auch immer, es ändert nichts. Für ihn spielen diese Details eine Rolle.
Also muss ich da durch.

Ich hinterfrage alles, weil ich mir sehr unsicher bin was java angeht.
Im Skript steht es nur Stichpunkteartig und oft nur angerissen. Gefragt wird danach aber sehr wohl.


Aber Danke erstmal für die schnellen Antworten. Ein bisschen mehr Klarheit kann ich gerade sehr gebrauchen.

Den genauen Unterschied zwischen Aufruf und Übergabeparameter muss ich für die Klausur kennen.
Warum auch immer.. vielleicht ist es irgendwo wichtig.


zu dem .length. Wenn ich mehrere Strings in den Array verpacke, werden diese dann einfach aneinandergereiht? Etwas so: eingabe1eingabe2eingabe3 ?



Habe versucht es am Rechner aufzurufen, aber kann in der console das Programm nicht compilieren und weiß nicht wie man es im eclipse so ausführen kann, dass man es testen kann.. :/
vielleicht hat da ja wer einen tipp für mich. das ist eigentlich echt nicht mein thema ^^
 
S

SlaterB

Gast
zu Aufrufparameter vs. Übergabeparameter:
es gibt schlicht keine derartigen Fachbegriffe in Java, und niemand kann dir erklären wie du dein Skript zu verstehen hast,
google zeigt sich aber bisschen gnädig, wenn du es auch schon nicht selber bedienen kannst
(ich mecker wirklich viel in diesem Thread, danke schon dass du dich nicht über die erste Antwort beschwert hast ;) )

Aufrufparameter -> wird in Zusammenhang mit main-Methode genannt
Übergabeparameter -> wird in Zusammenhang mit Methodenaufrufen innerhalb des Java-Programms genannt,
das KÖNNTE die richtigen Interpretation/ Unterscheidung sein

------

> Wenn ich mehrere Strings in den Array verpacke, werden diese dann einfach aneinandergereiht?
wenn du mehrere Strings in ein Array verpackst, dann hast du genau ein Array mit mehreren Strings,
nicht mehr und nicht weniger,
was sollte das mit Aneinanderreihung zu tun haben? wobei Aneinanderreihung wiederum zu definieren wäre,
falls Aneinanderreihung genau 'Strings in einem Array' heißt, dann wäre das ja richtig..
aber was sollte eingabe1eingabe2eingabe3 mit dem Array zu tun haben?

wenn ich drei Birnen in eine Einkaufstüte lege spreche ich ja auch nicht von BirneBirneBirne

------

Java-Fragen ohne Rechner.., na das kann ja heiter werden
 

ARadauer

Top Contributor
zu dem .length. Wenn ich mehrere Strings in den Array verpacke, werden diese dann einfach aneinandergereiht? Etwas so: eingabe1eingabe2eingabe3 ?
Dein Ernst? Klausur, das heißt du studierst.. Wir haben Jänner... wir sind am Ende vom Semester und du fragst nach einem Array? Wenn ich der Prof wäre, würde ich bei den Klausuren auch sehr streng sein um auszusortieren ;-)

Habe versucht es am Rechner aufzurufen, aber kann in der console das Programm nicht compilieren
Da können wir helfen...
javac MeineKlasse.java
java MeineKlasse
und weiß nicht wie man es im eclipse so ausführen kann, dass man es testen kann.. :/
Man klickt doppelt auf das Programm Symbol drauf...
 

X5-599

Top Contributor
Ausprobieren in Eclipse kannst du das indem du deinem Programm die Parameter wiefolgt mitgiebst:

Run -> Run Configurations...
Dann auf Reiter "Arguments" klicken und die Parameter im Feld "Program arguments" eintragen. Mehrere Parameter werden mit Leerzeichen getrennt (genauso wie beim Aufruf über die Kommandozeile). z.B.
Parameter1 Parameter2 nocheinparameter

Gruß
 
R

RagnaroekC

Gast
zu Aufrufparameter vs. Übergabeparameter:
es gibt schlicht keine derartigen Fachbegriffe in Java, und niemand kann dir erklären wie du dein Skript zu verstehen hast,
google zeigt sich aber bisschen gnädig, wenn du es auch schon nicht selber bedienen kannst
(ich mecker wirklich viel in diesem Thread, danke schon dass du dich nicht über die erste Antwort beschwert hast ;) )

Aufrufparameter -> wird in Zusammenhang mit main-Methode genannt
Übergabeparameter -> wird in Zusammenhang mit Methodenaufrufen innerhalb des Java-Programms genannt,
das KÖNNTE die richtigen Interpretation/ Unterscheidung sein

------

> Wenn ich mehrere Strings in den Array verpacke, werden diese dann einfach aneinandergereiht?
wenn du mehrere Strings in ein Array verpackst, dann hast du genau ein Array mit mehreren Strings,
nicht mehr und nicht weniger,
was sollte das mit Aneinanderreihung zu tun haben? wobei Aneinanderreihung wiederum zu definieren wäre,
falls Aneinanderreihung genau 'Strings in einem Array' heißt, dann wäre das ja richtig..
aber was sollte eingabe1eingabe2eingabe3 mit dem Array zu tun haben?

wenn ich drei Birnen in eine Einkaufstüte lege spreche ich ja auch nicht von BirneBirneBirne
Na endlich, das erklärt einiges. Es ist doch sonst immer alles genormt... xD
Gerade die vielen verschiedenen Verwendungen haben mich ja verwirrt.

>> wenn ich drei Birnen in eine Einkaufstüte lege spreche ich ja auch nicht von BirneBirneBirne
Nein, dann sind es drei Birnen in einer Einkaufstüte ^^..

Drei Strings in einem Array, okay. Das dachte ich mir. Aber irgendwie muss es ja gefüllt werden. Ein Array hat doch mehrere Felder, Regalfächer oder wie auch immer man sie nennen will.

Irgendwie muss er den Arbeitsspeicher ja nach einem gewissen Muster füllen.
Strings sind Zeichenketten, soweit so gut. Also haut er die Zeichen einfach nach einander da rein?
Woher weiß er dann, wo welcher String aufhört wenn man ihn dann im Programm benutzt? Wird das irgendwo gespeichert, sowas wie feld 0-15 String 1?

Tut mir leid wenn ich es so kompliziert mache, es ist für mich nur schwer vorstellbar. ^^



zu ARadauer
>Dein Ernst? Klausur, das heißt du studierst.. Wir haben Jänner... wir sind am Ende vom Semester und du fragst nach einem Array? Wenn ich der Prof wäre, würde ich bei den Klausuren auch sehr streng sein um auszusortieren <

Ich studiere Maschinenbau, richtig. :)
Es ist nicht ganz so schlimm wie es scheint, programmieren kann ich sogar halbwegs.
Ich versteh nur nicht was da genau passiert.
Es ist nicht schwer den Programmcode zusammen zu flicken das er läuft, nur würde ich gerne verstehen was da passiert. Die Klausur ist erst im März, also noch was hin. ^^

>Da können wir helfen...
javac MeineKlasse.java
java MeineKlasse<

mhm ja, habe ich schon versucht. javac funktioniert nicht. ich vermute er findet den pfad nicht, wo der compiler liegt? ich weiß nicht wie ich es anders ausdrücken soll. er kann mit javac nichts anfangen.
das liegt vermutlich daran, dass ich das programm aus dem eclipseordner geholt habe, kann das sein?

>Man klickt doppelt auf das Programm Symbol drauf... <
mhh.. Programmsymbol? Wo soll das sein?
Der Run Button (Grünes Playzeichen) ist es jedenfalls nicht. ^^

Ah, ich sehe gerade die neue Antwort von X5-599.
damit ist diese Frage beantwortet.

sehr gut, danke
 
Zuletzt bearbeitet von einem Moderator:

Alph0r

Mitglied
>> wenn ich drei Birnen in eine Einkaufstüte lege spreche ich ja auch nicht von BirneBirneBirne
Nein, dann sind es drei Birnen in einer Einkaufstüte ^^..

Drei Strings in einem Array, okay. Das dachte ich mir. Aber irgendwie muss es ja gefüllt werden. Ein Array hat doch mehrere Felder, Regalfächer oder wie auch immer man sie nennen will.

Irgendwie muss er den Arbeitsspeicher ja nach einem gewissen Muster füllen.
Strings sind Zeichenketten, soweit so gut. Also haut er die Zeichen einfach nach einander da rein?
Woher weiß er dann, wo welcher String aufhört wenn man ihn dann im Programm benutzt? Wird das irgendwo gespeichert, sowas wie feld 0-15 String 1?

Tut mir leid wenn ich es so kompliziert mache, es ist für mich nur schwer vorstellbar. ^^


Ich weiß nicht, ob ich deine Frage genau verstehe. IMO hilft es bei sowas wirklich das ganze nochmal etwas zu wiederholen und von Anfang an nochmal zu lernen.

So wie ich deine Frage verstehe: Ein Array hat in der Tat mehrere "Fächer"
In jedem der Fächer ist GENAU EIN Element. D.H. in einem String Array ist in jedem Fach genau ein String Objekt.
Jedes dieser String Objekte hat natürlich mehrere Buchstaben, aber es ist trotzdem ein Objekt.
Wie viel Speicher jedes dieser Objekte einnimmt hängt von der Länge ab, ist aber nicht wirklich wichtig für das Programmieren, wie der Speicher ganz genau aussieht.

Wenn du Jetzt z.B. ein Array erstellst: String[]{"hund", "birne", "apfel"}
dann ist im ersten Fach= "hund" im zweiten "birne" im dritten "apfel", zu beachten ist noch, das das erste Fach die Nummer 0 hat und nicht 1. Und die Länge des Arrays ist 3.
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
@RagnaroekC
wenn es dir um die Speicherumsetzung geht, lohnt sich auch das mit einem Wort zu erwähnen..
bei Strings wie bei allen Objekten gilt:
das Array steht im Speicher hintereinander weg, genau 4 Byte pro Objekt,
jede 4 Bytes sind eine Referenz auf irgendeinen Ort im Heap, wo jeder String abgeschlossen für sich steht, in beliebiger Größe,
wobei das auch kompliziert ist, verschiedene String-Objekte können intern auf dasselbe große char[] verweisen
 
I

irgendjemand

Gast
Genauer gesagt sind es die ersten Übungsblätter einer Klausur..
Und bedauerlicher Weise ist der Professor da sehr, sehr kleinlich.
Das mag daran liegen, dass er eigentlich kein "Java Professor" ist sondern Digitale Bildbearbeitung und Auswertung gelernt hat... Man muss bei ihm auch den Standartkonstruktor hinschreiben. Soweit ich weiß braucht man das eigentlich nicht weil der automatisch erzeugt wird.
Wie auch immer, es ändert nichts. Für ihn spielen diese Details eine Rolle.
Also muss ich da durch.

solche "profis" liebe ich ja ganz dolle ...

1) eine METHODE hat entweder PARAMETER ... oder eben nicht ... PUNKT
die von dir genannten begriffe wie aufruf- und übergabe- und methodenparameter und und und ... gibt es einfahc NICHT ... erkläre das mal bitte deinem dozenten ... und wenn er sagt es würde angeblich einen unterschied geben dann empfehle ihm mal bitte "Java ist auch eine Insel" ...

der einzige unterschied der mir persönlich einfallen würde ... der aber so sicher nicht gemeint ist : "programmparameter" ...
das sind die parameter die du einem programm beim starte von console *oder anderst* mitgibst ... und die bei java im String-Array von main landen ...
aber ich kann mir NICHT vorstellen das dein dozent das meint ... zu mal er ja scheinbar weder was vom programmieren allgemein noch von java im speziellen weis ...

2) standard-konstruktor
du hast absolut recht ... wenn du keinen standard-konstruktor schreibst baut ihn der compiler automatisch ein ... auch das kann dein dozent in der java insel nachlesen ...
es ist eh sinnlos diesen konstruktor in den code zu schreiben ...
die einzige ausnahme : man möchte z.b. ein singelton bauen und muss desshalb das instanzieren der klasse verhindern ... das macht man in dem man dann den konstruktor mit [c]private[/c] von außen abschirmt ...
ansonsten schreibst du konstruktoren noch wenn innerhalb dieser irgendwas passieren soll *ja ... dann macht sogar der standard-konstruktor sinn* oder wenn du konstruktoren mit parametern hast ...

aber nur um eine klasse zu instanzieren ... ohne das man etwas spezielles innerhalb des konstruktors macht *also der standard-konstruktor keine implementierung hat* kann man diesen weglassen -> ebenfalls java insel

3) Arrays
da würde ich dir noch mal einen blick in google empfehlen ... da ich mir gut vorstellen kann das du es bei einem solchen dozent nicht verstehst *mein beileid* ...
 
R

RagnaroekC

Gast
Danke! Wirklich, so langsam schließt sich der Kreis bei mir.
Nun verstehe ich auch genauer den Code arrayname[] = new int[16];
Die einzelnen Fächer sind Objekte des Typs int á 32Bit = 4Byte. Darum das new. Weil 16 Objekte angelegt werden. Habe mir so etwas schon gedacht, wahrscheinlich auch schon mal irgendwo gelesen, aber manche Dinge muss man eben zwei mal hören. :)




das Array steht im Speicher hintereinander weg, genau 4 Byte pro Objekt,
Im Arbeitsspeicher nehme ich an.
okay, klingt plausibel. einfach so wies kommt dann wohl.

jede 4 Bytes sind eine Referenz auf irgendeinen Ort im Heap, wo jeder String abgeschlossen für sich steht, in beliebiger Größe,

Jede 4 Bytes, also jedes Objekt zeigt auf einen Ort im so genannten heap, wo ich gerade nicht weiß was das ist. Aus wiki werde ich auch nicht wirklich schlau. Irgendwo muss der "heap" ja physisch ansässig sein.

Hört sich fast so an wie.. ist der heap auch im Arbeitsspeicher?


wobei das auch kompliziert ist, verschiedene String-Objekte können intern auf dasselbe große char[] verweisen

ich nehme mal an das ist irgendwas um Ressourcen zu sparen und würde den rahmen hier sprengen?



@irgendjemand
da gab es angeblich sogar schon diskussionen nach der klausur wegen punkteabzug beim "fehlenden" standartkonstruktor. geändert hat es nichts. einmal saßen wir satte 40 minuten untätig in der vorlesung weil er es nicht geschafft hat ein java programm zum laufen zu bringen. das programm zwar schon lange richtig, er hatte jedoch das speichern vergessen. ich glaube das war bei JOE und da muss man ja vor dem ausführen speichern... ^^ Sonst ist er aber immerhin sehr nett. Ein bisschen zerstreut. Ist eigentlich schade, dass er es nicht kann/vermitteln kann.

Ich denke das mit den "Programmparametern" passt!
Wahrscheinlich ist das die Lösung der Frage.
Vermutlich ist damit von ihm der "Aufrufparameter" gemeint. Werde das vor der Klausur noch abklären müssen. Immerhin habe ich mich jetzt genug damit auseinander gesetzt. Unvorbereitet gehe ich mit so Fragen nur ungerne hin. Warum dies gemeint sein kann ist, weil er Wissenschaftliche Mitarbeiter hat die von Java wesentlich mehr verstehen. Darum denke ich wird dies damit gemeint sein.

Das passt auch zu den Übungen. Unpassend dann aber die Namen, die stammen dann mit hoher Wahrscheinlichkeit vom Prof. und wurden in die Übungsblätter integriert. Und somit schließt sich der Kreis.

Punkt zwei werde ich mir die Tage in Ruhe ansehen.
Und zu Punkt drei, ich habe mir alles was ich über Java weiß durch google und bücher selbst bei gebracht. Bei den Vorlesungen habe ich nichts so richtig verstanden. Das liegt aber auch daran, dass mein Vorwissen da miserabel war, schätze ich.


Auf jeden Fall danke an alle schon mal für eure Hilfe hier!
Macht so echt mehr Spaß als wenn man ständig unsicher ist.
 

hdi

Top Contributor
Darum das new. Weil 16 Objekte angelegt werden.
Ne, nicht ganz. Es wird ein Objekt angelegt (Du hast ja auch nur ein mal new). Und zwar ein Array. Nur, dass ein Array intern aus mehreren Fächern besteht. Diese speichern in dem Fall 16 Datensätze á 4 Byte, das ist korrekt. Und ein int ist kein Objekt, es ist ein primitiver Datentyp. Also verwechsle das nicht. All das was hier gesagt wird über 4-Byte-Referenz und Heap usw, das trifft nur zu falls die Datensätze des Arrays komplexe Datentypen sind, zB String. Aber nicht int, da gibt's keine Referenzen. Dummerweise belegt ein int zufälligerweise 4 Byte, genauso wie eine Referenz. Aber zB ein byte-Array belegt pro Fach nur 1 Byte.

das Array steht im Speicher hintereinander weg, genau 4 Byte pro Objekt,
Im Arbeitsspeicher nehme ich an.
Ja. Aber nochmal: 4 Byte pro Objekt, damit ist gemeint 4 Byte pro Referenz auf ein Objekt, und zwar nur dann wenn das Array Datensätze von komplexem Datentyp enthält.

ist der heap auch im Arbeitsspeicher?
Genau

wobei das auch kompliziert ist, verschiedene String-Objekte können intern auf dasselbe große char[] verweisen
ich nehme mal an das ist irgendwas um Ressourcen zu sparen und würde den rahmen hier sprengen?
Jup, aber das ist für den Anfang echt nicht wichtig genau zu wissen
 

RagnaroekC

Mitglied
Hey, danke für die Korrektur.
Okay, soweit ist dann alles klar. Nun habe ich auch schon die nächste Frage.

Es geht gerade darum mittels JOptionPane zwei Zahlen einzulesen und diesen mittels einem Operator zu verarbeiten.

Zum einlesen habe ich
Java:
String zahl1 = JOptionPane.showInputDialog(null, "Zahl 1 eingeben.", "Zahl 1", JOptionPane.PLAIN_MESSAGE)
verwendet.
Diese wird meiner Kenntnis nach dann in einem String gespeichert wodurch die Verwendung erst dann möglich ist, wenn man sie in Integer umwandelt, was mittels
Java:
int x = Integer.parseInt(zahl1)
; bei mir realisiert wurde.

Soweit so gut, Problematisch wird das ganze beim Operator.
Wie kann ich den String in einen Charakter umwandeln um ihn in einer switch-case Anweisung (nennt man das so?) verwenden zu können?

Ich habe mir diese 1:1 aus der insel heraussuchen können:


Java:
  switch ( op ) 
		  { 
		    case '+': 
		      System.out.println( x + y ); 
		      break; 
		    case '-': 
		      System.out.println( x – y ); 
		      break; 
		    case '*': 
		      System.out.println( x * y ); 
		      break; 
		    case '/': 
		      System.out.println( x / y ); 
		      break;
}
 

hdi

Top Contributor
Wie kann ich den String in einen Charakter umwandeln um ihn in einer switch-case Anweisung (nennt man das so?) verwenden zu können?
Du kannst einen String nicht in einen Charakter umwandeln, denn ein String ist eine Folge von mehreren Charactern. Aber eine Umwandlung ist auch gar nicht nötig. Denn zumindest seit Java 7 funktioniert das switch-statement auch auf Strings:

Java:
switch(string){
   case "Hallo": /* do sth */ break;
   case "Ciao": /* do sth */ break;
}

Kann aber sein dass du nicht Java 7 verwendest, und dann geht das nicht. Und generell ist ein switch eine eingeschränkte Kontrollstruktur. Neben switch-Statements gibt es eine andere, allgemeinere und auf mehr Fälle anwendbare Kontrollstruktur: Das if(-else)-Statement. Mit Kombination der Methode equals(), welche zwei Werte gegeinander abgleicht, kannst du dann schreiben:

Java:
if(string.equals("Hallo"){
   // string enthält text "Ciao"
}
else if(string.equals("Ciao"){
   // string enthält text "Ciao"
}
else{
   // string ist weder "Hallo" noch "Ciao" sondern irgendwas anderes
}
 

RagnaroekC

Mitglied
Stimmt, Java 7 habe ich noch nicht.

Dann ist die schwierigkeit dieser Frage wahrscheinlich überholt.

Wie hat man es zu Zeiten vor Java 7 gemacht, weil ich denke die schreiber dieser Übungen wollten, dass man dies hier lernt.

Noch einmal die Aufgabe. Zwei Zahlen einlesen, eine Rechenoperation einlesen (-+.. usw) und die beiden Zahlen mit dieser verrechnen.
Ich muss nun nur noch wissen wie man charakter mittels JOptionPane.showInputDialog einliest und dann benutzt.

Das if else if kenne ich. Warum verwendet man switch-case, ist eines schneller?

Grüße
 
S

Spacerat

Gast
Aufrufparameter vs. Übergabeparameter:
Also soweit ich weis gibt es da schon einen Unterschied aber in Zeiten von mehr oder weniger guten IDEs spricht da anscheinend kein Mensch mehr von...
Aufrufparameter sind die Parameter, die per Deklaration von einer Methode verlangt (erwartet) und in dieser dann auch verwendet werden bzw. verwendet werden können - z.B. ein Objekt der Klasse CharSequence.
Übergabeparameter sind nun die Parameter, die man real an die Methode übergibt - z.B. ein Objekt der Klasse String. Sicher, dabei geht es nun mehr um die Klassen der Parameter um deren Inhalt aber trotzdem bleiben es Parameter. Eine IDE würde niemals meckern, wenn ich einer Methode, die mindestens eine CharSequence erwartet, einen String bekommt. Das Problem taucht erst auf, wenn ich innerhalb der Methode dann auch noch auf den Parameter als String zugreifen möchte.
 

bERt0r

Top Contributor
Wie hdi oben geschrieben hat. Strings kannst du nicht mit == vergleichen sondern musst das über die Methode equals machen.
 

X5-599

Top Contributor
Um nochmal auf die switch Sache zurückzukommen. Wenn du den Operator ausliest, kannst du es so machen:

Java:
String operator = JOptionPane...//usw
char op = operator.charAt(0);
switch(op)
{
case '+':
System.out.println("addieren");
break;

case '/':
System.out.println("dividieren");
break;
}

Gruß
 

RagnaroekC

Mitglied
Ah, clever. Einfach das erste Zeichen einlesen des Strings... und da es ja nur ein Zeichen gibt. Easy, okay. Gewusst wie.

Nun habe ich noch ein Problem in diesem Programm, wo mir die Ursache ein Rätsel ist.

Java:
import javax.swing.JOptionPane;


public class jpane {

	public static void main(String args[])
	{
		
		// Operation 
		
		String zahl1 = JOptionPane.showInputDialog(null, "Zahl 1 eingeben.", "Zahl 1", JOptionPane.PLAIN_MESSAGE);
		String zahl2 = JOptionPane.showInputDialog(null, "Zahl 2 eingeben.", "Zahl 2", JOptionPane.PLAIN_MESSAGE);
		String operator = JOptionPane.showInputDialog(null, "Operation eingeben.", "Operation", JOptionPane.PLAIN_MESSAGE);
		int x = Integer.parseInt(zahl1);
		int y = Integer.parseInt(zahl2);
		
	
		char op = operator.charAt(0);
		 
		  switch (op)  
		  { 
		    case '+': 
		      System.out.println( x + y ); 
		      break; 
		    case '-': 
		      System.out.println( x – y );     // An dieser Stelle meckert er: The primitive type
                                              //  int of  x does not have a field y
	                                         // Syntax error on token "Invalid Character", . expected

	at jpane.main(jpane.java:27)
		      break; 
		    case '*': 
		      System.out.println( x * y ); 
		      break; 
		    case '/': 
		      System.out.println( x / y ); 
		      break;
	}
	}
}
 

X5-599

Top Contributor
So wie ich das sehe hast du für die case-Anweisung das "richtige" Minus verwendet ( ASCII 45 dez. , 002D hex. ).
Für die Ausgabe im println hast du einen Unicode n-Dash ( 8211 dez. , 2013 hex. ).

Das müsste es sein.
Gruß
 

RagnaroekC

Mitglied
Ich möchte den Inhalt eines Strings auf seinen Datentypen überprüfen.
Also ob es sich um eine Zahl, ein Zeichen oder einen Buchstaben handelt.
Wie kann ich das Problem angehen?
 

RagnaroekC

Mitglied
Das hier schaut garnicht so übel aus.

static boolean isDigit() Handelt es sich um eine Ziffer zwischen 0 und 9?
static boolean isLetter() Handelt es sich um einen Buchstaben?
static boolean isLetterOrDigit() Handelt es sich um ein alphanumerisches Zeichen?

Meinste das?

In der Aufgabe heißt es, man soll "Die Methode soll den Logarithmus einer Zahl zu einer beliebigen Basis berechnen." Und naja, beliebige Basis kann ja eig auch e, 10 usw. sein. vielleicht mach ich das hier gerade aber auch viel zu kompliziert und es ist eigentlich ganz einfach gedacht.
 

RagnaroekC

Mitglied
Hey,

hab noch ne Frage.

was hast (char)255 mit expliziter Typkonvertierung zu tun?
Zumindest vermute ich, dass es etwas damit zu tun hat.

gibt man (char)255 aus, so liefert es ein Zeichen (vermutlich UNICODE stelle 255?).

ihr könnt euch ja vorstellen wie "super" man nach "(char)255" googeln kann. ^^
Darum wärs nett wenn mir das kurz wer erklären könnte.
 
S

SlaterB

Gast
> was hast (char)255 mit expliziter Typkonvertierung zu tun?

hast du eine Definition für 'expliziter Typkonvertierung' oder kannst du das irgendwie in Worte + Beispiele fassen?
ergibt sich daraus nicht automatisch, dass (char)255 genau das ist?
 

RagnaroekC

Mitglied
äh ja, ich versteh darunter, dass man dem compiler explizit sagen muss, dass er einen größeren datentypen in einen kleineren packt auch wenn dies einen datenverlust zur folge hat.

zb. double in int.

also.. ich kann mit (char)255 nichts anfangen.
warum muss er nen Zeichen in Char explizit "rein drücken" obwohl chars doch für Zeichen sind ???:L
 
S

SlaterB

Gast
so klingt die Frage schon viel intelligenter ;)
Zahlen im Quellcode wie 255 sind nunmal keine Zeichen, sondern Zahlen, standardmäßig int bis 2 Mill.,
für den begrenzen kleinen char-Datentyp muss also genauso mit Datenverlust aufmerksam gekürzt werden, wie double in int
 

hdi

Top Contributor
so ganz klar ist es mir immernoch nicht, was genau passiert bei zB (char)250?
Der int-Wert 250 wird in einen entsprechenden char-Wert gecastet. Jeder char ist einer bestimmten Dezimalzahl zugeordnet. Intern ist ein char eigentlich auch nichts anderes als ein int. Der Unterschied ist nur wie der Compiler den Wert betrachtet - ob als Zahl, oder als Zeichen.

Java:
int i = 250;
char c = 250;
System.out.println(i);
System.out.println(c);
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Fragen über den Konstruktor Java Basics - Anfänger-Themen 0
J Verschieden Fragen über Java Programmierung Java Basics - Anfänger-Themen 3
K Kleine Fragen über Arrays Java Basics - Anfänger-Themen 8
G Memory Projekt, Fragen über Fragen Java Basics - Anfänger-Themen 6
S Fragen über Fragen Java Basics - Anfänger-Themen 2
Zrebna Fragen zu einem Klassendiagramm Java Basics - Anfänger-Themen 8
H Fragen zu Wrapperklassen Java Basics - Anfänger-Themen 29
S Best Practice Fragen zu Projektstruktur einer Datenbank-Abfrage-App (MVC) Java Basics - Anfänger-Themen 13
A Bei VierGewinnt fragen ob man gegen CPU oder Menschen spielen will. Java Basics - Anfänger-Themen 7
A Bei VierGewinnt vorher fragen, ob man gegen den Computer spielen möchte oder gegeneinander. Java Basics - Anfänger-Themen 1
A Bei VierGewinnt fragen, ob man gegen den Computer spielen möchte oder gegeneinander Java Basics - Anfänger-Themen 1
sserio Wie kann man nach einer Klasse fragen? Java Basics - Anfänger-Themen 12
G Fragen zu Kompelierfehler in Aufgabe. Java Basics - Anfänger-Themen 25
E Bäume/ allgemeine Fragen Java Basics - Anfänger-Themen 21
O Falsche Antworten zu Fragen Java Basics - Anfänger-Themen 4
S Diverse Fragen vor Schulaufgabe ;) Java Basics - Anfänger-Themen 4
S Fragen zu Ausgabe double und float Java Basics - Anfänger-Themen 3
B fragen zu Aufbau eines UML-Klassendiagramm Java Basics - Anfänger-Themen 1
C 3 Fragen rund um Klassenattribute Java Basics - Anfänger-Themen 8
L Erste Schritte Log4J Fragen Java Basics - Anfänger-Themen 5
NeoLexx Fragen zu diversen Elementen der Javabibliothek Java Basics - Anfänger-Themen 5
D Budget Manager fragen zur Umsetzung Java Basics - Anfänger-Themen 9
N Fragen zur Datenspeicherung Java Basics - Anfänger-Themen 45
T Java Anfänger mit konkreten Fragen Java Basics - Anfänger-Themen 2
CT9288 Fragen zu Java Java Basics - Anfänger-Themen 16
W Fragen zu Generics Java Basics - Anfänger-Themen 14
T ObjectInput/OutputStream Fragen zur Funktionsweise Java Basics - Anfänger-Themen 3
J Fragen zu einer Methode Java Basics - Anfänger-Themen 3
J Fragen zum Code aus dem Buch "Schrödinger programmiert Java 2.te Ausgabe" Java Basics - Anfänger-Themen 6
Z Fragen zu Exception (Throws/throw) Java Basics - Anfänger-Themen 7
J Fragen zu Input/Output Java Basics - Anfänger-Themen 3
J Erste Schritte Oracle Tutorials zu Java 8 - Fragen dazu Java Basics - Anfänger-Themen 1
H Java Quereinsteiger Roadmap und Fragen Java Basics - Anfänger-Themen 29
H fragen Java Basics - Anfänger-Themen 15
M Samelsarium Grundlegender Fragen 2 Java Basics - Anfänger-Themen 9
M Sammelsarium an Grundlagen Grundlagen Fragen Java Basics - Anfänger-Themen 11
B Java ist / wird kostenpflichtig. Ein paar Fragen Java Basics - Anfänger-Themen 1
J Fragen zu synrchonized und kritischen Abschnitten Java Basics - Anfänger-Themen 5
S Fragen zu einem Rechentrainer Java Basics - Anfänger-Themen 2
B Java Vererbung Fragen (zu Code Beispiel) Java Basics - Anfänger-Themen 3
J Wo kann man Fragen zu ireport stellen. Java Basics - Anfänger-Themen 0
M Fragen zum Anlegen und Benutzen von Listen Java Basics - Anfänger-Themen 9
G Ein paar Anfänger Fragen zu StdDraw Java Basics - Anfänger-Themen 4
D Fragen zur Klassen Java Basics - Anfänger-Themen 4
Aprendiendo Zwei Fragen und ein geerbtes "protected"-Attribut Java Basics - Anfänger-Themen 2
J Interface Fragen bezüglich "Sauberkeit" von Code Java Basics - Anfänger-Themen 5
D Objekte-Fragen Java Basics - Anfänger-Themen 1
V Erste Schritte Habe Fragen zu der For und While Schleife als auch Inkrement und Dekrement Java Basics - Anfänger-Themen 4
D Anfänger-Fragen(Parameter einer Methode) Java Basics - Anfänger-Themen 7
K Zwei Fragen zu Graphics/Graphics2D Java Basics - Anfänger-Themen 5
Azazel Ein paar Fragen zu Methodenaufrufen(java.awt) Java Basics - Anfänger-Themen 2
S Erste Schritte Fragen zur For-Schleife Java Basics - Anfänger-Themen 9
C Interface Fragen zum Interface Java Basics - Anfänger-Themen 7
GreenTeaYT Exception und zur OOP fragen? Java Basics - Anfänger-Themen 3
C Fragen zum Spigot Plugin (1.8) Java Basics - Anfänger-Themen 6
J Fragen zu Exceptions Java Basics - Anfänger-Themen 24
N Quiz- Fragen zufällig anzeigen lassen Java Basics - Anfänger-Themen 7
L Viele Fragen zu den Grundlagen Java Basics - Anfänger-Themen 5
B Fragen zu ZIP-File Java Basics - Anfänger-Themen 9
L fragen zu arrays Java Basics - Anfänger-Themen 8
L Fragen zu selbstgeschriebenem Programm Java Basics - Anfänger-Themen 5
M Fragen zum Auslesen von HTML Seiten Java Basics - Anfänger-Themen 5
J Threading-Aufgabe. Totale Noob Fragen, aber bitte trotzdem beantworten ;) Java Basics - Anfänger-Themen 7
S Java Fragen Konstruktor & Statische Methoden Java Basics - Anfänger-Themen 4
K Erste Schritte Frage Antwort Spiel - Fragen zur Planung Java Basics - Anfänger-Themen 2
C Java Applet Fragen: Serialisierung, Excel import Java Basics - Anfänger-Themen 2
Anfänger2011 2 kleine Fragen zu ArrayListen Java Basics - Anfänger-Themen 5
S Fragen zu Ausdrücken&Bedingungen Java Basics - Anfänger-Themen 5
A 2 kurze Anfänger fragen Java Basics - Anfänger-Themen 6
H grundlegende Fragen Java Basics - Anfänger-Themen 3
V Interface ich schäme mich das zu fragen, aber ich schaff nicht ein Text zu zentrieren :( [javaFX] Java Basics - Anfänger-Themen 6
N Programm: Fragen beantworten Java Basics - Anfänger-Themen 6
C Anfänger Anfänger Fragen Java Basics - Anfänger-Themen 8
Z Compiler-Fehler LinkedList Fragen Java Basics - Anfänger-Themen 4
D Rekursion Allgemeine Fragen Java Basics - Anfänger-Themen 2
D [Fragen] zu Methoden Java Basics - Anfänger-Themen 2
S Fragen zur Implementierung eines Binärbaums Java Basics - Anfänger-Themen 3
T Ein paar Fragen zu OOP und Java. Java Basics - Anfänger-Themen 16
J Allgemeine Fragen zur GUI Java Basics - Anfänger-Themen 1
johnnydoe Erste Schritte Erster Blick - erste Fragen Java Basics - Anfänger-Themen 11
DStrohma Grundsätzliche Fragen zu Drag & Drop Java Basics - Anfänger-Themen 1
N Klassen fragen zur getter und setter methode Java Basics - Anfänger-Themen 11
S 3 Fragen, Verzeichnis, GridLayout psoitionieren, Werte für JSpinner Java Basics - Anfänger-Themen 2
T Fragen zu Set / Relationen verknüpfen Java Basics - Anfänger-Themen 4
S 2 Fragen Java Basics - Anfänger-Themen 4
S Hallo und Fragen zu Arbeitsverzeichnis und Menü Java Basics - Anfänger-Themen 8
N Java Fragen... Java Basics - Anfänger-Themen 10
F ExecutorService Fragen! Java Basics - Anfänger-Themen 2
O HashMap Fragen Java Basics - Anfänger-Themen 8
C Fragen zu Arrays Java Basics - Anfänger-Themen 19
T viele "kleine" Fragen... Java Basics - Anfänger-Themen 3
S Fragen zur Implementierung eines Adressbuches Java Basics - Anfänger-Themen 20
S Fragen zu Arrays Java Basics - Anfänger-Themen 6
K Diverse Fragen zum Fehlerlogging Java Basics - Anfänger-Themen 9
N StringReader - Fragen Java Basics - Anfänger-Themen 8
C Einige Fragen zu Frames Java Basics - Anfänger-Themen 7
M Erste Schritte Allgemeine Fragen Java Basics - Anfänger-Themen 4
PaulG Fragen zu Binärbaum Java Basics - Anfänger-Themen 21
P Methoden Aquarium (Fragen zum Scanner) Java Basics - Anfänger-Themen 5
T Erste Schritte Fragen zu meinen kleinen Programm Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben