Fehler Semikolon fehlt - ich weiss aber nicht wo da noch eines hin sollte...

monsterherz

Aktives Mitglied
Java:
import java.util.Scanner;
class Leuineuro
{
    public static void main(String args[])
    {
        System.out.println("Bitte den Betrag in Rumänischen Leu eingeben");
        int leu=scan.nextInt();
        int leuineuro
        {
            int ergebnis=leu/5;
            System.out.println(leu + "sind" + ergebnis + "Euro");
        }
    }
}
 

Anhänge

  • Screenshot from 2023-01-23 18-35-06.png
    Screenshot from 2023-01-23 18-35-06.png
    110,7 KB · Aufrufe: 4
Was soll denn dieses "int leuineuro" sein / machen? Willst Du da eine Methode erstellen?

Wenn Du das einfach rausstreichst, dann hast Du:
Java:
import java.util.Scanner;
class Leuineuro
{
    public static void main(String args[])
    {
        System.out.println("Bitte den Betrag in Rumänischen Leu eingeben");
        int leu=scan.nextInt();
        int ergebnis=leu/5;
        System.out.println(leu + "sind" + ergebnis + "Euro");
    }
}

Wenn Du das in einer Methode haben willst, dann muss die Methode außerhalb der main Methode geschrieben werden, müsste einen Parameter bekommen und so ...

Java:
import java.util.Scanner;
class Leuineuro
{
    public static void main(String args[])
    {
        System.out.println("Bitte den Betrag in Rumänischen Leu eingeben");
        int leu=scan.nextInt();
        int ergebnis=leuInEuro(leu);
        System.out.println(leu + "sind" + ergebnis + "Euro");
    }

    public static int leuInEuro(int leu)
    {
        return leu/5;
    }
}
 
Java:
        int leuineuro
        {...}

[/QUOTE]
Als Methode dürfte einiges fehlen. Mit einer Änderung "leu"ft es (allerdings nur mit Ganzzahlen):

Java:
import java.util.Scanner;
public class Leu_in_euro {

    public static void main(String[] args) {
      
        Scanner scanner = new Scanner(System.in); //Ergänzung
    System.out.println("Bitte den Betrag in Rumänischen Leu eingeben");
        int leu=scanner.nextInt();
        //int leuineuro
        {
            int ergebnis=leu/5;
            System.out.println(leu + "sind" + ergebnis + "Euro");
        }
    }
}
Output:
Bitte den Betrag in Rumänischen Leu eingeben
50
50sind10Euro
 
Achso: sorry das war schon das zweite mal so der Fehler. Das ich mir nicht merken kann das trotzdem das das main steht es keine "Untermethode" gibt ...
Sorry-- ich versuche es auf meine Festplatte Namens Kopf zu schreiben !
 
Mit einem return wird die Methode verlassen. Somit kann danach nichts mehr kommen.

Und zu einer Methode gehören immer runde Klammern.
 
Achso: sorry das war schon das zweite mal so der Fehler. Das ich mir nicht merken kann das trotzdem das das main steht es keine "Untermethode" gibt ...
Sorry-- ich versuche es auf meine Festplatte Namens Kopf zu schreiben !
"Untermethoden" gibt's nicht, du kannst aber Functions, BiFunctions, Consumer und Supplier usw. erstellen.
Java:
{
    Supplier<Integer> getMeAValue = () -> {
        //this returns 4;
        return 4;
    };
    Function<String,Integer>longerThanTheString = s -> {
        int len = s.length;
        return len+1;
    }
    int result = getMeAValue.get();
    int longer = longerThanTheString.apply("Hallo);
}
Hin und wieder praktisch, aber in fast allen Fällen ist es sauberer, die Methoden in der Klasse zu definieren und auf private zu setzen.

Weitere Möglichkeiten sind Predicate, BiFunction, TriConsumer usw.
 
Da wird auch im Sinne der Java Language Specification keine Methode erstellt sondern es ist eine Variablendeklaration mit Initialisierung. Und die Initialisierung findet statt über Lambda Expressions.

An der Stelle der Hinweis: Lambda Expressions umfassen idealer Weise immer nur eine Zeile! Dafür sind sie perfekt.
Die Ausdrücke des Beispiels wären auch einfach darzustellen als:
Java:
Supplier<Integer> getMeAValue = () -> 4;
Function<String,Integer> longerThanTheString = s -> s.length() + 1;

(Wobei diese Lambda Expressions noch im Rahmen sind - Effective Java hat da als Maximum 3 Zeilen Code vorgeschlagen:
Im Gegensatz zu Methoden und Klassen fehlt es Lambdas an Bezeichnern und Dokumentation; sofern eine Berechnung also nicht selbsterklärend ist oder mehr als einige wenige Zeilen umfasst, sollten Sie den Code nicht in ein Lambda verpacken. Eine Zeile ist ideal für Lambda-Ausdrücke, drei Zeilen sind ein vernünftiges Maximum.

Und wenn es eben nicht so einfach ist, dann sollte man an Methodenreferenzen denken!
 
Da wird auch im Sinne der Java Language Specification keine Methode erstellt sondern es ist eine Variablendeklaration mit Initialisierung. Und die Initialisierung findet statt über Lambda Expressions.

An der Stelle der Hinweis: Lambda Expressions umfassen idealer Weise immer nur eine Zeile! Dafür sind sie perfekt.
Die Ausdrücke des Beispiels wären auch einfach darzustellen als:
Java:
Supplier<Integer> getMeAValue = () -> 4;
Function<String,Integer> longerThanTheString = s -> s.length() + 1;

(Wobei diese Lambda Expressions noch im Rahmen sind - Effective Java hat da als Maximum 3 Zeilen Code vorgeschlagen:


Und wenn es eben nicht so einfach ist, dann sollte man an Methodenreferenzen denken!
ok aber dafür bin ich noch zu sehr Anfänger. Ich durcharbeite einen Kurs und ein Buch.
 
Dann nochmal eine Übung in der Richtung gemacht. Jetzt kommt kein Fehler aber auch keine Ausgabe. Warum?
 

Anhänge

  • Screenshot from 2023-01-24 09-56-46.png
    Screenshot from 2023-01-24 09-56-46.png
    36,7 KB · Aufrufe: 3
  • Screenshot from 2023-01-24 09-56-12.png
    Screenshot from 2023-01-24 09-56-12.png
    124 KB · Aufrufe: 4
Bitte poste Code nicht als Screenshot. Problem: Man kann dann nichts kopieren, um es in einer Antwort zu referenzieren.
Das Problem ist aber, dass du ja die Methode "umrechnung" überhaupt nicht aufrufst.
Zum Start jeder Java Anwendung, wie deiner, wird immer nur die main(String[] args) Methode aufgerufen. Nichts anderes.
Wenn du willst, dass deine Methode aufgerufen wird, musst du das von main() aus tun.
 
Bitte poste Code nicht als Screenshot. Problem: Man kann dann nichts kopieren, um es in einer Antwort zu referenzieren.
Das Problem ist aber, dass du ja die Methode "umrechnung" überhaupt nicht aufrufst.
Zum Start jeder Java Anwendung, wie deiner, wird immer nur die main(String[] args) Methode aufgerufen. Nichts anderes.
Wenn du willst, dass deine Methode aufgerufen wird, musst du das von main() aus tun.
ok danke für die verständliche Info. Ich recherchiere nochmal genauer.

Zusätzlich noch der (noch falsche) Code:


Java:
import java.util.Scanner;
public class Umrechnung {

        public static void main (String[] args)
        {
    }

    public static void umrechnung()
        {
                System.out.println("Bitte den Betrag in Rubel eing>
                Scanner scanner = new Scanner(System.in);
                int rubel=scanner.nextInt();
                int ergebnis=rubel / 3;
                System.out.println(rubel + " sind" + ergebnis+ " E>
                return;
        }
}
 
Java:
import java.util.Scanner;
public class Umrechnung {

        public static void main (String[] args)
        {
    }

    public static void umrechnung()
        {
                System.out.println("Bitte den Betrag in Rubel eing>
                Scanner scanner = new Scanner(System.in);
                int rubel=scanner.nextInt();
                int ergebnis=rubel / 3;
                System.out.println(rubel + " sind" + ergebnis+ " E>
                return;
        }
}
Die Antwort stand eigentlich schon.
1. In deiner main Methode steht nichts, es wird also auch nichts ausgegeben.
2. Der Aufruf "java Umrechnung.java" kann nicht klappen. Was Java in diesem Fall versuchen würde, wäre die Klasse "java" im Package "Umrechnung", also aus der Datei "Umrechnung/java.class" zu lesen und auszuführen. Eine *.java-Datei ist Quellcode, der Befehl "java" ruft aber die main-Methode in der passenden Klasse auf.
2.a Der Aufruf lautet also "java Umrechnung"


Schau dir mal ein "Hello World" Tutorial an, um zu sehen, wie in Java kompilieren und aufrufen funktioniert.
 
2. Der Aufruf "java Umrechnung.java" kann nicht klappen. Was Java in diesem Fall versuchen würde, wäre die Klasse "java" im Package "Umrechnung", also aus der Datei "Umrechnung/java.class" zu lesen und auszuführen. Eine *.java-Datei ist Quellcode, der Befehl "java" ruft aber die main-Methode in der passenden Klasse auf.
2.a Der Aufruf lautet also "java Umrechnung"
Doch, ein Aufruf über java dateiname.java funktioniert:
 

Anhänge

  • Screenshot from 2023-01-24 10-15-40.png
    Screenshot from 2023-01-24 10-15-40.png
    35 KB · Aufrufe: 3
alter.java ist eine andere Klasse/Datei als die, die du gezeigt hast. Du hast uns "Umrechnung.java" gezeigt.
Und in Java müssen public Klassennamen so heißen wie ihre .java Datei.
 
alter.java ist eine andere Klasse/Datei als die, die du gezeigt hast. Du hast uns "Umrechnung.java" gezeigt.
Und in Java müssen public Klassennamen so heißen wie ihre .java Datei.
Ja. Es ging mir erstmal nur darum httpdigest zu zeigen das der Aufruf einer Datei über Dateiname.java möglich ist.
jetzt hab ich den Code korrigiert und er funzt - also ein Danke an Alle für den Unterricht
Java:
import java.util.Scanner;
public class Umrechnung {

        public static void main (String[] args)
        {
    umrechnung();
        }

    public static void umrechnung()
        {
                System.out.println("Bitte den Betrag in Rubel eingeben");
                Scanner scanner = new Scanner(System.in);
                int rubel=scanner.nextInt();
                int ergebnis=rubel / 3;
                System.out.println(rubel + " sind" + ergebnis+ " Euro");
                return;
        }
}
 

Anhänge

  • Screenshot from 2023-01-24 10-24-49.png
    Screenshot from 2023-01-24 10-24-49.png
    47,5 KB · Aufrufe: 0
2. Der Aufruf "java Umrechnung.java" kann nicht klappen. Was Java in diesem Fall versuchen würde, wäre die Klasse "java" im Package "Umrechnung", also aus der Datei "Umrechnung/java.class" zu lesen und auszuführen. Eine *.java-Datei ist Quellcode, der Befehl "java" ruft aber die main-Methode in der passenden Klasse auf.
In eine Java Version ist das hinzu gefügt worden. Man kann in neueren Java Versionen direkt ein Java Source File aufrufen.

Das ist mit Java 14 oder so gekommen - ich erinnere mich gerade nicht mehr.

Wenn man Java Aufruft, dann bekommt man das auch als Option mit angegeben:
Code:
Verwendung: java [Optionen] <Hauptklasse> [args...]
           (zur Ausführung einer Klasse)
   oder  java [Optionen] -jar <JAR-Datei> [args...]
           (zur Ausführung einer JAR-Datei)
   oder  java [Optionen] -m <Modul>[/<Hauptklasse>] [args...]
       java [Optionen] --module <Modul>[/<Hauptklasse>] [args...]
            (zur Ausführung der Hauptklasse in einem Modul)
   oder  java [Optionen] <Quelldatei> [args]
           (zur Ausführung eines Programms mit einer einzelnen Quelldatei)

Edit: Als Code eingefügt da er es sonst nicht richtig anzeigt - auch wenn es dann nicht fett gemacht werden kann.
 

Neue Themen


Zurück
Oben