Was meinst du mit "var" a ? Du möchtest doch eine Instanz von deinem Konto erstellen ?Hier den Quellcode und die Fehlermeldung neu:
package de.habelitz.uebung06;
public class KontoTest2 {
public static void main(String[] args) {
var a = new Konto("0000000001", 1000.0);
System.out.println("Konto Nr. ");
}
}
}
Fehlermeldung:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
at javaUebung05/de.habelitz.uebung06.KontoTest2.main(KontoTest2.java:4)
package de.habelitz.uebung06;
public class Konto {
private String Kontonummer;
private double Kontostand;
Konto(String kn, double ks) {
Kontonummer = kn;
Kontostand = ks;
}
String getKontonummer() {
return Kontonummer;
}
double getKontostand() {
return Kontostand;
}
void einzahlen(double betrag) {
Kontostand += betrag;
}
void auszahlen(double betrag) {
Kontostand -= betrag;
}
}
public class KontoTest2 {
public static void main(String[] args) {
var a = new Konto("0000000001", 1000.0);
System.out.println("Konto Nr. ");
}
}
}
void einzahlen(double betrag) {
Kontostand += betrag;
}
void auszahlen(double betrag) {
Kontostand -= betrag;
}
private void verbuchen(double betrag){
kontoStand += betrag;
}
void einzahlen(double betrag) {
verbuchen(betrag);
}
void auszahlen(double betrag) {
verbuchen(-betrag);
}
Das ist doch nicht eleganter...da ist nur das rechenzeichen ein unterschied das kannst du eleganter lösen:
"var" ist ein Keyword TypinferenzWas meinst du mit "var" a ? Du möchtest doch eine Instanz von deinem Konto erstellen ?
Das wäre so möglich " Konto konto1 (zb) = new Konto("0001",10.0);
void x (){
BorderPane xyz = new BorderPane();
}
void x (){
var xyz = new BorderPane();
}
um das jetzt mal "in depth" zu analysieren
1. du hast keine IDE, diese würde dir helfen vor Compilier errors , und formatierung
2. dein var ist richtig genutzt ... weis nicht was @Sandro95 da ansprechen wollte das ist valide von der Syntax, hast du aber java 10 oder größer ? vor java 10 gibts des nicht ( aber das denke ich dass du hast )
jetzt zu deinem Problemchen
meines erachtens gehen da 2 Klammern auf und 3 zuJava:public class KontoTest2 { public static void main(String[] args) { var a = new Konto("0000000001", 1000.0); System.out.println("Konto Nr. "); } } }
gut problem gelöst ...
als nächstes Camel case einhalten in java https://ao.ms/camelcase-method-in-java/
dh attribute klein ... Kontonummer wird zu kontoNummer
da ist nur das rechenzeichen ein unterschied das kannst du eleganter lösen:
in dem du eine Private rein schummelstJava:void einzahlen(double betrag) { Kontostand += betrag; } void auszahlen(double betrag) { Kontostand -= betrag; }
da du nur die vorzeichen umdrehen musstJava:private void verbuchen(double betrag){ kontoStand += betrag; } void einzahlen(double betrag) { verbuchen(betrag); } void auszahlen(double betrag) { verbuchen(-betrag); }
package de.habelitz.uebung06;
public class KontoTest2 {
public static void main(String[] args) {
var a = new Konto("0000000001", 1000.0);
System.out.println("Konto Nr. ");
}
}
Eclipse ist eine IDE , kopier mal exakt das was in den Klassen drin steht in code tags, also STRG + A und STRG +C und dann in code tags posten
und zusätzlich diese klassen sind schon in unterschieldichen dateien?
Diese Symbolleiste, die mit dem code tags beginnt, ist nicht aktiviert
oder einfach[code=java]...dein Java-Code...[/code]
im Editor schreiben.
Jetzt hab ich es: Ich muss das Feld "BB-Code umschalten" anklicken.dass die code tags nicht aktiviert sind kann ich nicht glauben.. du klickst da drauf und dann poppt ein fenster auf... außer du hast nen internet explorer
Ich habe die Klammer gelöscht und das Programm dan mit "Run" gestartet. Hier die Fehlermeldung:also bei KontoTest2 gehört auf jeden Fall die Letzte klammer weg... ich hab die klassen ge copy pasted ohne der zusätzlichen klammer und diese sind gültig
Syntax error, insert "}" to complete ClassBody
Die Datei enthält in dem oben geposteten Zustand aber tatsächlich eine Klammer zu viel ...Ich habe die Klammer gelöscht und das Programm dan mit "Run" gestartet. Hier die Fehlermeldung:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Syntax error, insert "}" to complete ClassBody
at javaUebung05/de.habelitz.uebung06.Konto.<init>(Konto.java:26)
at javaUebung05/de.habelitz.uebung06.KontoTest2.main(KontoTest2.java:6)
package de.habelitz.uebung06;
public class KontoTest2 {
public static void main(String[] args) {
var a = new Konto("0000000001", 1000.0);
System.out.println("Konto Nr. ");
}
}
}
}
package de.habelitz.uebung06;
public class KontoTest2 {
public static void main(String[] args) {
var a = new XYZ("0000000001", 1000.0);
System.out.println("Konto Nr. ");
}
}
class XYZ {
private String Kontonummer;
private double Kontostand;
XYZ(String kn, double ks) {
Kontonummer = kn;
Kontostand = ks;
}
String getKontonummer() {
return Kontonummer;
}
double getKontostand() {
return Kontostand;
}
void einzahlen(double betrag) {
Kontostand += betrag;
}
void auszahlen(double betrag) {
Kontostand -= betrag;
}
}
Der Code wird nicht gehn das währen zwei Klassen in einer Datei.gegenprobe mach mal bei deiner KontoStand2 klasse STRG + A und lösch alles und paste das rein
wenn das was rotes anzeigt ist es irgendwas in eclipse... => neue datei anlegen und copy pastenJava:package de.habelitz.uebung06; public class KontoTest2 { public static void main(String[] args) { var a = new XYZ("0000000001", 1000.0); System.out.println("Konto Nr. "); } } class XYZ { private String Kontonummer; private double Kontostand; XYZ(String kn, double ks) { Kontonummer = kn; Kontostand = ks; } String getKontonummer() { return Kontonummer; } double getKontostand() { return Kontostand; } void einzahlen(double betrag) { Kontostand += betrag; } void auszahlen(double betrag) { Kontostand -= betrag; } }
ab dann löscht du einfach die lokale XYZ klasse und ersetzt sie durch das Konto ab dann solls wieder funktionieren
Wenn du nach oben schaust, siehst du, dass wir uns damit im Kreise drehen.Das genau ist der Fehlermeldung nach zu tun: die fehlende geschweifte Klammer einfügen, um den Klassenkörper zu schließen.
Dein Programm funktioniert!gegenprobe mach mal bei deiner KontoStand2 klasse STRG + A und lösch alles und paste das rein
wenn das was rotes anzeigt ist es irgendwas in eclipse... => neue datei anlegen und copy pastenJava:package de.habelitz.uebung06; public class KontoTest2 { public static void main(String[] args) { var a = new XYZ("0000000001", 1000.0); System.out.println("Konto Nr. "); } } class XYZ { private String Kontonummer; private double Kontostand; XYZ(String kn, double ks) { Kontonummer = kn; Kontostand = ks; } String getKontonummer() { return Kontonummer; } double getKontostand() { return Kontostand; } void einzahlen(double betrag) { Kontostand += betrag; } void auszahlen(double betrag) { Kontostand -= betrag; } }
ab dann löscht du einfach die lokale XYZ klasse und ersetzt sie durch das Konto ab dann solls wieder funktionieren
Wenn das danach der Code ist, dann stimmt das ja auch, denn du nutzt die Variable "a" ja auch nicht.Ersetze ich aber "XYZ" in der 4. Zeile durch "Konto" und neutralisiere alles nach der 9. Zeile mit //, zeigt Eclipse mir in der 4. Zeile schon an: "The value of the local variable a is not used."
public class KontoTest2 {
public static void main(String[] args) {
var a = new Konto("0000000001", 1000.0); // "a" wird erzeugt und mehr passiert damit nicht
System.out.println("Konto Nr. ");
}
}
Danke für deine Info.The value of the local variable a is not used.
Ist ja auch kein Fehler sondern nur ein Hinweis der IDE an dich das du eine Variable hast die du nicht benutzt.
package de.habelitz.uebung06;
public class KontoTest3 {
public static void main(String[] args) {
var a = new Konto("0000000001", 1000.0);
System.out.println("Konto Nr. " + a.getKontonummer());
}
}
+ a.getKontonummer()
weglässt, dann geht es (bis auf die Warnung)?War tatsächlich auch völlig unnötig, weil ich es bereits, mit deutlich weniger Polemik, geschrieben hatte. Keine Ahnung, welchem inneren Zwang du da folgen musstest.Traurig das ich das hier nochmal ansprechen muss.
Das sind dann innere Klassen. Auf Dateilevel darf es nur eine geben.natürlich geht der
wer sagt es geht nur 1e Klasse pro datei ?
es geht nur 1e PUBLIC klasse pro datei(die es geben muss )... abe rdu kannst unendlich viele public private und protected klassen machen wie du willst in einer datei
Wie gesagt, es liegt nicht an KontoTest3.java, sondern an Konto.java (schau dir mal die Fehlermeldung an, der oberste Eintrag ist der Ort, wo der Fehler aufgetreten ist, darunter folgt dann der Aufruf = Stacktrace).Danke für deine Info.
Hier die Verbesserung, in der diese Fehlermeldung nicht mehr auftaucht:
package de.habelitz.uebung06;
public class KontoTest3 {
public static void main(String[] args) {
var a = new Konto("0000000001", 1000.0);
System.out.println("Konto Nr. " + a.getKontonummer());
}
}
Dafür kommt jetzt wieder die alte Fehlermeldung:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Syntax error, insert "}" to complete ClassBody
at javaUebung05/de.habelitz.uebung06.Konto.<init>(Konto.java:26)
at javaUebung05/de.habelitz.uebung06.KontoTest3.main(KontoTest3.java:6)
Hier fehlt aber kein "}"!