Scanner

seymenxkaya

Aktives Mitglied
Hey Leute, ich bin ein Anfänger, mit wenigen Kenntnissen und nun habe ich ein Problem, welches ich auch durchs recherchieren nicht lösen konnte. Ich bin auf eure Hilfe angewiesen :D.
Mein Quellcode: ( Ich denke es geht viel effektiver, aber das war jetzt für mich die einfachste Lösung.)

Java:
import java.util.Scanner;

public class Notendurchschnitt1_2 {

    private static Scanner scan;

    public static void main (String [] args) {
        
        int i = 10;
        int j = 11;
        int k = 12;
        double eins,zwei,drei,vier,fünf,sechs,sieben,acht,neun,zehn,elf,zwölf,ergebnis,ergebnis1;
        
        System.out.println("Wie viele Noten willst du einberechnen?");
        System.out.println("i = 10, j = 11, k = 12"); // er soll nach fragen, welche Variable eingegeben wurde, um in die jeweilige Schleife zu gehen.
        scan = new Scanner(System.in);
        
        if((scan.nextInt()) == i) { //falls der jenige 10 Noten eingeben will gehe in diese Schleife
            
            System.out.println("Geben Sie bitte Ihre erste Zahl ein.");
            eins = scan.nextDouble();                                    // Nach der ersten Zahl fragen
            System.out.println("Geben Sie bitte Ihre zweite Zahl ein.");
            zwei = scan.nextDouble();                                    // Nach der zweiten Zahl fragen
            System.out.println("Geben Sie bitte Ihre dritte Zahl ein.");
            drei = scan.nextDouble();                                    // Nach der dritten Zahl fragen
            System.out.println("Geben Sie bitte Ihre vierte Zahl ein.");
            vier = scan.nextDouble();                                    // Nach der vierten Zahl fragen
            System.out.println("Geben Sie bitte Ihre fünfte Zahl ein.");
            fünf = scan.nextDouble();                                    // Nach der fünften Zahl fragen
            System.out.println("Geben Sie bitte Ihre sechste Zahl ein.");
            sechs = scan.nextDouble();                                    // Nach der sechsten Zahl fragen
            System.out.println("Geben Sie bitte Ihre siebte Zahl ein.");
            sieben = scan.nextDouble();                                    // Nach der siebten Zahl fragen
            System.out.println("Geben Sie bitte Ihre achte Zahl ein.");
            acht = scan.nextDouble();                                    // Nach der achten Zahl fragen
            System.out.println("Geben Sie bitte Ihre neunte Zahl ein.");
            neun = scan.nextDouble();                                    // Nach der neunten Zahl fragen
            System.out.println("Geben Sie bitte Ihre zehnte Zahl ein.");
            zehn = scan.nextDouble();                                    // Nach der zehnten Zahl fragen
            
            ergebnis = eins+zwei+drei+vier+fünf+sechs+sieben+acht+neun+zehn;
            ergebnis1 = ergebnis/10;
            System.out.println("Ihr Notendurchschnit beträgt " + ergebnis1);}
            
          else if ((scan.nextInt()) == j) { //falls der jenige 11 Noten eingeben will gehe in diese Schleife
                
            System.out.println("Geben Sie bitte Ihre erste Zahl ein.");
            eins = scan.nextDouble();                                    // s.o.i
            System.out.println("Geben Sie bitte Ihre zweite Zahl ein.");
            zwei = scan.nextDouble();
            System.out.println("Geben Sie bitte Ihre dritte Zahl ein.");
            drei = scan.nextDouble();
            System.out.println("Geben Sie bitte Ihre vierte Zahl ein.");
            vier = scan.nextDouble();
            System.out.println("Geben Sie bitte Ihre fünfte Zahl ein.");
            fünf = scan.nextDouble();
            System.out.println("Geben Sie bitte Ihre sechste Zahl ein.");
            sechs = scan.nextDouble();
            System.out.println("Geben Sie bitte Ihre siebte Zahl ein.");
            sieben = scan.nextDouble();
            System.out.println("Geben Sie bitte Ihre achte Zahl ein.");
            acht = scan.nextDouble();
            System.out.println("Geben Sie bitte Ihre neunte Zahl ein.");
            neun = scan.nextDouble();
            System.out.println("Geben Sie bitte Ihre zehnte Zahl ein.");
            zehn = scan.nextDouble();
            System.out.println("Geben Sie bitte Ihre elfte Zahl ein.");
            elf = scan.nextDouble();

            ergebnis = eins+zwei+drei+vier+fünf+sechs+sieben+acht+neun+zehn+elf;
            ergebnis1 = ergebnis/11;
            System.out.println("Ihr Notendurchschnit beträgt " + ergebnis1);}
            
            else if ((scan.nextInt()) == k) { //falls der jenige 12 Noten eingeben will gehe in diese Schleife
                
                System.out.println("Geben Sie bitte Ihre erste Zahl ein.");
                eins = scan.nextDouble();                                // s.o.
                System.out.println("Geben Sie bitte Ihre zweite Zahl ein.");
                zwei = scan.nextDouble();
                System.out.println("Geben Sie bitte Ihre dritte Zahl ein.");
                drei = scan.nextDouble();
                System.out.println("Geben Sie bitte Ihre vierte Zahl ein.");
                vier = scan.nextDouble();
                System.out.println("Geben Sie bitte Ihre fünfte Zahl ein.");
                fünf = scan.nextDouble();
                System.out.println("Geben Sie bitte Ihre sechste Zahl ein.");
                sechs = scan.nextDouble();
                System.out.println("Geben Sie bitte Ihre siebte Zahl ein.");
                sieben = scan.nextDouble();
                System.out.println("Geben Sie bitte Ihre achte Zahl ein.");
                acht = scan.nextDouble();
                System.out.println("Geben Sie bitte Ihre neunte Zahl ein.");
                neun = scan.nextDouble();
                System.out.println("Geben Sie bitte Ihre zehnte Zahl ein.");
                zehn = scan.nextDouble();
                System.out.println("Geben Sie bitte Ihre elfte Zahl ein.");
                elf = scan.nextDouble();
                System.out.println("Geben Sie bitte Ihre zwölfte Zahl ein.");
                zwölf = scan.nextDouble();

                ergebnis = eins+zwei+drei+vier+fünf+sechs+sieben+acht+neun+zehn+elf+zwölf;
                ergebnis1 = ergebnis/12;
                System.out.println("Ihr Notendurchschnit beträgt " + ergebnis1);}
                
            }
        }

Nun als Fehler spuckt mir die Konsole, nachdem ich "i","j" oder "k" eingegeben habe, folgendes aus:

Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at Notendurchschnitt1_2.main(Notendurchschnitt1_2.java:18)

Bitte um Hilfe.
 
Zuletzt bearbeitet:
K

kneitzel

Gast
Ja, und dann natürlich die Prüfung ob es der String „i“, „j“ oder „k“ ist. Und Strings bitte mit equals vergleichen und nicht mit ==.
 

seymenxkaya

Aktives Mitglied
Ja, und dann natürlich die Prüfung ob es der String „i“, „j“ oder „k“ ist. Und Strings bitte mit equals vergleichen und nicht mit ==.
Kenne mich mit equals nicht aus, aber so wie ich es verstanden habe müsste es nun lauten: if((scan.nextString()).equals(i)) . Doch der zeigt mir links an der Seite ein Falsch Symbol an.
 
Zuletzt bearbeitet:

Robat

Top Contributor
Scanner besitzt keine nextString() Methode .. die Methode heißt nextLine() oder next() .. je nach dem was du brauchst.
 

seymenxkaya

Aktives Mitglied
Scanner besitzt keine nextString() Methode .. die Methode heißt nextLine() oder next() .. je nach dem was du brauchst.
Vielen Dank! Ich weiß nur nicht, was die passende Methode für mein Programm ist. Der soll ja fast den ganzen Quellcode durchgehen. Habe es mit nextLine() probiert, aber da kann ich nur den Buchstaben eingeben und danach passiert nichts mehr. Ist aber auch normal denke ich, da er ja sich nur eine Zeile anguckt,oder?
 

temi

Top Contributor
Vielen Dank! Ich weiß nur nicht, was die passende Methode für mein Programm ist. Der soll ja fast den ganzen Quellcode durchgehen. Habe es mit nextLine() probiert, aber da kann ich nur den Buchstaben eingeben und danach passiert nichts mehr. Ist aber auch normal denke ich, da er ja sich nur eine Zeile anguckt,oder?

Ich habe das Gefühl, dass du da etwas gründlich missverstehst.

Was soll deiner Meinung nach passieren?
 

seymenxkaya

Aktives Mitglied
Ich habe das Gefühl, dass du da etwas gründlich missverstehst.

Was soll deiner Meinung nach passieren?
Kann sein :( xD. Also meine Intention ist es, dass das Programm nach fragt, ob man 10,11 oder 12 Noten mit einberechnen möchte (dazu die Variablen i,j und k). Wenn man i eingegeben hat, soll es in die Abfrage rein gehen, wo nur nach 10 Noten gefragt wird und 10 Noten mit einberechnet werden. Falls jedoch j oder k eingegeben wurde, soll man in die jeweilige Abfrage rein gehen. Und es soll jedes mal neu nach einer Note gefragt.
 

flopalko

Bekanntes Mitglied
Wieso willst du das mit Variablen machen? Die benötigst du dafür nicht. Du kannst entweder direkt nach der Anzahl der Noten fragen und diese mit Scanner.nextInt() einlesen, oder einfach so nach "i", "j" oder "k" fragen. Dafür musst du die Variablen nicht anlegen, denn es geht dir nur um die Eingabe.
 

seymenxkaya

Aktives Mitglied
Wieso willst du das mit Variablen machen? Die benötigst du dafür nicht. Du kannst entweder direkt nach der Anzahl der Noten fragen und diese mit Scanner.nextInt() einlesen, oder einfach so nach "i", "j" oder "k" fragen. Dafür musst du die Variablen nicht anlegen, denn es geht dir nur um die Eingabe.
Keine Ahnung fand es einfach schöner, aber das ist ja gar nicht mehr das Problem. Sondern, dass wenn ich die Variable eingebe, es nichts mehr passiert. Es wird danach keine Frage mehr gestellt und ich kann nichts mehr eintippen.
 

temi

Top Contributor
Du musst die Eingabe einmal vor der Auswertung einlesen, sonst bleibt dein Programm bei jeder "scan.nextInt()" Anweisung stehen und wartet auf eine neue Eingabe.

Java:
int anzahl = scan.nextInt(); // Wartet auf die Eingabe einer Zahl z.B. 10, 11, usw.

if (anzahl == 10) {
   // ...
} else if (anzahl == 11) {
   // usw.
 

seymenxkaya

Aktives Mitglied
Du musst die Eingabe einmal vor der Auswertung einlesen, sonst bleibt dein Programm bei jeder "scan.nextInt()" Anweisung stehen und wartet auf eine neue Eingabe.

Java:
int anzahl = scan.nextInt(); // Wartet auf die Eingabe einer Zahl z.B. 10, 11, usw.

if (anzahl == 10) {
   // ...
} else if (anzahl == 11) {
   // usw.
So hat es geklappt, danke. Zwar ohne meine heiß geliebten Variablen, aber ich versuch mich mal weiter dran, es damit hin zu bekommen. Immerhin klappt es jetzt haha, Vielen Dank!
 

seymenxkaya

Aktives Mitglied
Ich habe es so hinbekommen
Code:
import java.util.Scanner;

public class Notendurchschnitt1_3 {

    private static Scanner scan;

    public static void main (String [] args) {
        
        
        double eins,zwei,drei,vier,fünf,sechs,sieben,acht,neun,zehn,elf,zwölf,ergebnis,ergebnis1;
        
        System.out.println("Wie viele Noten willst du einberechnen?");
        System.out.println("i = 10, j = 11, k = 12"); // er soll nach fragen, welche Variable eingegeben wurde, um in die jeweilige Schleife zu gehen.
        scan = new Scanner(System.in);
        String s = scan.next();
        
        if(s.equals("i")) { //falls der jenige 10 Noten eingeben will gehe in diese Schleife
            
            System.out.println("Geben Sie bitte Ihre erste Zahl ein.");
            eins = scan.nextDouble();                                    // Nach der ersten Zahl fragen
            System.out.println("Geben Sie bitte Ihre zweite Zahl ein.");
            zwei = scan.nextDouble();                                    // Nach der zweiten Zahl fragen
            System.out.println("Geben Sie bitte Ihre dritte Zahl ein.");
            drei = scan.nextDouble();                                    // Nach der dritten Zahl fragen
            System.out.println("Geben Sie bitte Ihre vierte Zahl ein.");
            vier = scan.nextDouble();                                    // Nach der vierten Zahl fragen
            System.out.println("Geben Sie bitte Ihre fünfte Zahl ein.");
            fünf = scan.nextDouble();                                    // Nach der fünften Zahl fragen
            System.out.println("Geben Sie bitte Ihre sechste Zahl ein.");
            sechs = scan.nextDouble();                                    // Nach der sechsten Zahl fragen
            System.out.println("Geben Sie bitte Ihre siebte Zahl ein.");
            sieben = scan.nextDouble();                                    // Nach der siebten Zahl fragen
            System.out.println("Geben Sie bitte Ihre achte Zahl ein.");
            acht = scan.nextDouble();                                    // Nach der achten Zahl fragen
            System.out.println("Geben Sie bitte Ihre neunte Zahl ein.");
            neun = scan.nextDouble();                                    // Nach der neunten Zahl fragen
            System.out.println("Geben Sie bitte Ihre zehnte Zahl ein.");
            zehn = scan.nextDouble();                                    // Nach der zehnten Zahl fragen
            
            ergebnis = eins+zwei+drei+vier+fünf+sechs+sieben+acht+neun+zehn;
            ergebnis1 = ergebnis/10;
            System.out.println("Ihr Notendurchschnit beträgt " + ergebnis1);}
            
          else if (s.equals("j")) { //falls der jenige 11 Noten eingeben will gehe in diese Schleife
                
            System.out.println("Geben Sie bitte Ihre erste Zahl ein.");
            eins = scan.nextDouble();                                    // s.o.
            System.out.println("Geben Sie bitte Ihre zweite Zahl ein.");
            zwei = scan.nextDouble();
            System.out.println("Geben Sie bitte Ihre dritte Zahl ein.");
            drei = scan.nextDouble();
            System.out.println("Geben Sie bitte Ihre vierte Zahl ein.");
            vier = scan.nextDouble();
            System.out.println("Geben Sie bitte Ihre fünfte Zahl ein.");
            fünf = scan.nextDouble();
            System.out.println("Geben Sie bitte Ihre sechste Zahl ein.");
            sechs = scan.nextDouble();
            System.out.println("Geben Sie bitte Ihre siebte Zahl ein.");
            sieben = scan.nextDouble();
            System.out.println("Geben Sie bitte Ihre achte Zahl ein.");
            acht = scan.nextDouble();
            System.out.println("Geben Sie bitte Ihre neunte Zahl ein.");
            neun = scan.nextDouble();
            System.out.println("Geben Sie bitte Ihre zehnte Zahl ein.");
            zehn = scan.nextDouble();
            System.out.println("Geben Sie bitte Ihre elfte Zahl ein.");
            elf = scan.nextDouble();

            ergebnis = eins+zwei+drei+vier+fünf+sechs+sieben+acht+neun+zehn+elf;
            ergebnis1 = ergebnis/11;
            System.out.println("Ihr Notendurchschnit beträgt " + ergebnis1);}
            
            else if (s.equals("k")) { //falls der jenige 12 Noten eingeben will gehe in diese Schleife
                
                System.out.println("Geben Sie bitte Ihre erste Zahl ein.");
                eins = scan.nextDouble();                                // s.o.
                System.out.println("Geben Sie bitte Ihre zweite Zahl ein.");
                zwei = scan.nextDouble();
                System.out.println("Geben Sie bitte Ihre dritte Zahl ein.");
                drei = scan.nextDouble();
                System.out.println("Geben Sie bitte Ihre vierte Zahl ein.");
                vier = scan.nextDouble();
                System.out.println("Geben Sie bitte Ihre fünfte Zahl ein.");
                fünf = scan.nextDouble();
                System.out.println("Geben Sie bitte Ihre sechste Zahl ein.");
                sechs = scan.nextDouble();
                System.out.println("Geben Sie bitte Ihre siebte Zahl ein.");
                sieben = scan.nextDouble();
                System.out.println("Geben Sie bitte Ihre achte Zahl ein.");
                acht = scan.nextDouble();
                System.out.println("Geben Sie bitte Ihre neunte Zahl ein.");
                neun = scan.nextDouble();
                System.out.println("Geben Sie bitte Ihre zehnte Zahl ein.");
                zehn = scan.nextDouble();
                System.out.println("Geben Sie bitte Ihre elfte Zahl ein.");
                elf = scan.nextDouble();
                System.out.println("Geben Sie bitte Ihre zwölfte Zahl ein.");
                zwölf = scan.nextDouble();

                ergebnis = eins+zwei+drei+vier+fünf+sechs+sieben+acht+neun+zehn+elf+zwölf;
                ergebnis1 = ergebnis/12;
                System.out.println("Ihr Notendurchschnit beträgt " + ergebnis1);}
                
            }
        }
 

temi

Top Contributor
Ich habe es so hinbekommen

Gut gemacht!

Falls du schon Schleifen kennst, ist dies ein Beispiel, wie es mit einer Schleife für eine beliebige Anzahl von Noten zu realisieren wäre:

Java:
public class Main {

    public static void main(String[] args) {

        System.out.print("Wie viele Noten willst du einberechnen? ");

        Scanner scanner = new Scanner(System.in);

        int count = scanner.nextInt();

        double sum = 0.0;

        for (int i = 1; i <= count; i++) {
            System.out.print("Geben Sie die Zahl " + i + " ein: ");
            sum = sum + scanner.nextDouble(); // oder sum += scanner.nextDouble();
        }

        System.out.println();
        System.out.println("Ihr Notendurchschnitt beträgt: " + sum / count);
    }
}
 

M.L.

Top Contributor
Und für später sollte man "sinnlose" Programmeingaben (negative Werte, Noten <1 oder >6, sonstige bel. Stringeingaben) via Exception (oder switch...case) abfangen und im Programmfluss würdigen.
 

temi

Top Contributor
Das war mein nächstes Ziel :D. Aber ist dies nicht mithilfe eines Arrays möglich? Also ein Array der Länge 6 für die Noten.

Möglich ist vieles, abhängig davon, was man haben möchte, kann das eine oder das andere die bessere Lösung sein.

In diesem Fall ist es wohl am einfachsten mit einer if-Bedingung die Eingabe zu überprüfen.

Für die korrekte Behandlung der Scanner.Methoden brachst du allerdings try...catch, weil z.B. die Eingabe von Buchstaben bei nextInt() zu einer Ausnahme (Exception) führen würde.
 
Zuletzt bearbeitet:

seymenxkaya

Aktives Mitglied
Möglich ist vieles, abhängig davon, was man haben möchte, kann das eine oder das andere die bessere Lösung sein.

In diesem Fall ist es wohl am einfachsten mit einer if-Bedingung die Eingabe zu überprüfen.

Für die korrekte Behandlung der Scanner.Methoden brachst du allerdings try...catch, weil die z.B. die Eingabe von Buchstaben bei nextInt() zu einer Ausnahme (Exception) führen würde.
Okay danke, das Problem ist ich kenne mich gar nicht mit der Scanner Methode aus, muss es mir erst noch beibringen. Hast du eine Buchempfehlung?
 

seymenxkaya

Aktives Mitglied
Ich habe nun eine bessere und kompaktere Version programmiert, jedoch stecke ich bei einer Idee fest. Ich möchte, dass man nur Noten von 1-6 eingeben kann und meine Idee wäre eine if-Bedingung in welcher die Eingabe überprüft wird, ob sie kleiner als 6 ist. Nur weiß ich nicht wie ich das in mein Programm implementieren soll.
Code:
import java.util.Scanner;

public class Notendurchschnitt1_4 {

    private static Scanner scan;

    public static void main (String [] args) {
   
    scan = new Scanner(System.in);  
    int anzahl = 0;
    double eingabe,durchschnitt = 0,ergebnis = 0;

    System.out.println("Wie viele Noten willst du eingeben?");
    anzahl = scan.nextInt() ;
   
    for (int i = 0; i < anzahl ; i++) {
       
        System.out.println("Gib deine Note ein.");
        eingabe = scan.nextDouble();
        durchschnitt = durchschnitt + eingabe;
   
    ergebnis=durchschnitt/anzahl;
   
    }
   
    System.out.println("Dein Notendurchschnitt beträgt " +ergebnis + " .");
   
    }
}
Ich würde gerne noch eine else Bedingung habe, in welcher man erneut eine Note eingeben muss und der davorige Wert z.B 7 nicht mit einberechnet wurde.
Danke für eure Hilfe.

Meine Idee:
Code:
if (eingabe <=6) {...}
else (?)
 

M.L.

Top Contributor
Vor
Code:
durchschnitt = durchschnitt + eingabe;
noch eine do-while-Schleife setzen:
Code:
 do {
durchschnitt = durchschnitt + eingabe;
 }  while (0<eingabe<=6)
Und bei Falscheingaben die Variable "anzahl" nicht weiter hochzählen, sondern um erneute valide Eingabe bitten.
 

seymenxkaya

Aktives Mitglied
Vor
Code:
durchschnitt = durchschnitt + eingabe;
noch eine do-while-Schleife setzen:
Code:
 do {
durchschnitt = durchschnitt + eingabe;
}  while (0<eingabe<=6)
Und bei Falscheingaben die Variable "anzahl" nicht weiter hochzählen, sondern um erneute valide Eingabe bitten.
Vielen Dank!
 

temi

Top Contributor
Ich würde gerne noch eine else Bedingung habe, in welcher man erneut eine Note eingeben muss und der davorige Wert z.B 7 nicht mit einberechnet wurde.

Java:
    for (int i = 0; i < anzahl ; i++) {
     
        System.out.println("Gib deine Note ein.");
        eingabe = scan.nextDouble();
        durchschnitt = durchschnitt + eingabe;
 
    ergebnis=durchschnitt/anzahl;
 
    }

Da du nicht weißt, wie oft der Benutzer eine falsche Zahl eingibt, wäre es an dieser Stelle besser von der "for-Schleife" zur "while-Schleife" zu wechseln. Bei der "while-Schleife" kannst du den Schleifenzähler selbst erhöhen, wenn eine korrekte Zahl eingegeben wurde.

Java:
    int i = 1;
    while (i <= anzahl) {
     
        // wenn korrekte Eingabe, dann i++
 
    }
 

seymenxkaya

Aktives Mitglied
Danke euch erst ein mal, es funktioniert endlich wie geplant! Nur blicke ich noch nicht ganz durch, wieso i = 1 ist.
Code:
import java.util.Scanner;

public class Notendurchschnitt1_5 {

    private static Scanner scan;

    public static void main (String [] args) {
    
    scan = new Scanner(System.in);   
    int anzahl = 0, i = 1;
    double eingabe,durchschnitt = 0,ergebnis = 0;
    
    System.out.println("Wie viele Noten willst du eingeben?");
    anzahl = scan.nextInt() ;
    
     while (i <= anzahl) {
        
        System.out.println("Gib deine Note ein.");
        eingabe = scan.nextDouble();
        if(eingabe <=6) {
        i++;}
        else {
            durchschnitt= durchschnitt - eingabe;
            System.out.println("Nur Noten von 1-6 sind möglich! Gib deine Note erneut ein.");
        }
        durchschnitt = durchschnitt + eingabe;
    
    ergebnis=durchschnitt/anzahl;
    }
    
    System.out.println("Dein Notendurchschnitt beträgt " +ergebnis + ".");
    }
}
 

temi

Top Contributor
Nur blicke ich noch nicht ganz durch, wieso i = 1 ist.

Meinst du dieses hier?
Java:
int anzahl = 0, i = 1;

Das ist einfach eine Zählvariable und ich hatte als Startwert "1" gewählt, damit man dieses hier machen kann:

Java:
System.out.println("Gib deine " + i + ".  Note ein.");

Natürlich kannst du auch i = 0 setzen und in der Schleife auf i < anzahl prüfen.

Oder (nicht ernst gemeint):

Natürlich kannst du auch i = 100 setzen und in der Schleife auf i - 100 < anzahl prüfen.

Kurz gesagt: Initialisiere den Wert so, dass es am besten zu deinem Anwendungsfall passt und auch beim Lesen des Codes (z.B. einige Wochen später) noch logisch und sinnvoll erscheint.
 
Zuletzt bearbeitet:

mihe7

Top Contributor
Nur blicke ich noch nicht ganz durch, wieso i = 1 ist.
Weil Du in der Zeile int anzahl = 0, i = 1; i mit 1 initialisierst, oder meinst Du etwas anderes?

Ich würde die Summe im then-Zweig erhöhen, dann braucht man die Eingabe im else-Zweig nicht mehr abzuziehen. Den Gesamtdurchschnitt kannst Du auch nach der Schleife ausrechnen.
 

temi

Top Contributor
Java:
     while (i <= anzahl) {
       
        System.out.println("Gib deine Note ein.");
        eingabe = scan.nextDouble();
        if(eingabe <=6) {
        i++;}
        else {
            durchschnitt= durchschnitt - eingabe;
            System.out.println("Nur Noten von 1-6 sind möglich! Gib deine Note erneut ein.");
        }
        durchschnitt = durchschnitt + eingabe;
   
    ergebnis=durchschnitt/anzahl;
    }

Hier kannst du noch einiges verbessern:

Java:
     while (i <= anzahl) {
       
        System.out.println("Gib deine Note ein.");
        eingabe = scan.nextDouble();
        if(eingabe <=6) {
            durchschnitt = durchschnitt + eingabe; // oder durchschnitt += eingabe;
            i++;}
        else {
            System.out.println("Nur Noten von 1-6 sind möglich! Gib deine Note erneut ein.");
        }
    }

    ergebnis=durchschnitt/anzahl; // das musst du nicht jedesmal berechnen, es reicht einmal nach der Schleife

Außerdem fehlt noch die Abfrage, wenn die Eingabe kleiner als 1 ist.
 

seymenxkaya

Aktives Mitglied
Das mit i=1 habe ich nun verstanden, jedoch wüsste ich ehrlich gesagt nicht was ich da noch verbessern kann. Das mit dem Ergebnis habe ich korrigiert, hast recht kann außerhalb der Klammer stehen :).
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
M Scanner Input mit if überprüfen Java Basics - Anfänger-Themen 5
D Scanner Java Basics - Anfänger-Themen 2
T scanner nicht erkannt Java Basics - Anfänger-Themen 3
T scanner eingaben erkennen und umtauschen Java Basics - Anfänger-Themen 4
Ostkreuz Int Scanner auf Enter Eingabe prüfen Java Basics - Anfänger-Themen 4
H Scanner nextLine() bringt Dateipfad Java Basics - Anfänger-Themen 1
Jul1n4tor Scanner error bei Eingabe die kein Integer ist Java Basics - Anfänger-Themen 4
Jul1n4tor Programm mit Scanner und If-Statements Java Basics - Anfänger-Themen 2
I Scanner Loop Java Basics - Anfänger-Themen 1
J Scanner cannot be resolved to a type Java Basics - Anfänger-Themen 3
C Scanner und If-Anweisung in Kombi Java Basics - Anfänger-Themen 3
X Erste Schritte Scanner eingabe wird übersprungen Java Basics - Anfänger-Themen 4
T j.u.Scanner(Sys.in).nextLine() wieder schließen? Java Basics - Anfänger-Themen 5
J Erste Schritte Scanner Java Basics - Anfänger-Themen 4
P Mit dem Scanner Klassen aufrufen Java Basics - Anfänger-Themen 3
javapingu Endlosschleife bei User Input mit try Scanner Java Basics - Anfänger-Themen 7
C Problem mit mehreren Methoden + Scanner Java Basics - Anfänger-Themen 5
Poppigescorn Arrayliste Mittels Scanner erweitern Java Basics - Anfänger-Themen 6
Jan_x8 Timer/Scanner Java Basics - Anfänger-Themen 5
M Scanner Klasse Java Basics - Anfänger-Themen 4
W Objekte über Scanner Input; ToString Probleme... Java Basics - Anfänger-Themen 4
F Erste Schritte java.util.Scanner: Beliebig langen Text per Paste in Console eingeben ? Java Basics - Anfänger-Themen 14
H Quellcode Scanner Klasse Java Basics - Anfänger-Themen 2
N java.util.InputMismatchException Fehler Java Scanner Java Basics - Anfänger-Themen 5
S Scanner soll Groß-/ Kleinschreibung ignorieren Java Basics - Anfänger-Themen 2
Y Wie kann ich Konsoleneingaben durch den Scanner mit JUnit 4 testen? Java Basics - Anfänger-Themen 1
J Scanner-Klasse Java Basics - Anfänger-Themen 2
B Scanner-If/else kleine Abhebungs-Simulation Java Basics - Anfänger-Themen 3
A Scanner Befehl Java Anfänger Java Basics - Anfänger-Themen 8
D Scanner- Exception NoSuchElementException Java Basics - Anfänger-Themen 2
G Scanner nutzen und Index auslesen Java Basics - Anfänger-Themen 8
N Problem mit Scanner Java Basics - Anfänger-Themen 2
V Ersätze für Java-Scanner Java Basics - Anfänger-Themen 9
P Methode die eigentlich einen Scanner benötigt mit toString() Java Basics - Anfänger-Themen 5
A Scanner-Error Java Basics - Anfänger-Themen 8
D Java Scanner Java Basics - Anfänger-Themen 9
M String in Scanner einlesen Java Basics - Anfänger-Themen 6
N Eingabe Kommazahlen über Scanner Java Basics - Anfänger-Themen 2
ZH1896ZH Verstehe verschieden Scanner und hasNext() nicht ganz Java Basics - Anfänger-Themen 2
O Mehrfache Scanner-Eingabe durch Komma getrennt Java Basics - Anfänger-Themen 6
I Scanner auf 10 Stellen begrenzt? Java Basics - Anfänger-Themen 5
B Barcode Scanner Java Basics - Anfänger-Themen 3
V Wie lasse ich die for-Schleife so oft laufen wie per Scanner angegeben? Java Basics - Anfänger-Themen 3
L Scanner schließen in While-Schleife? Java Basics - Anfänger-Themen 2
S Frage zu Scanner Java Basics - Anfänger-Themen 3
cpt.Tomato Scanner problem mit Passwort Login Java Basics - Anfänger-Themen 3
O Scanner Klasse Java Basics - Anfänger-Themen 8
M java.util.scanner Fehler Java Basics - Anfänger-Themen 5
B mehrere Werte mit scanner und while schleife einlesen, max berechnen bzw addieren Java Basics - Anfänger-Themen 2
W Eclipse Che Scanner Java Basics - Anfänger-Themen 8
H Vererbung Static Scanner Objekt verwenden - von StdIn in einer importierten Klasse lesen Java Basics - Anfänger-Themen 10
X Erste Schritte Problem mit scanner Java Basics - Anfänger-Themen 2
A Scanner.useLocale(Locale.US); Java Basics - Anfänger-Themen 4
M Datei einlesen mit Scanner funktioniert nicht (FileNotFoundException) Java Basics - Anfänger-Themen 6
I Scanner und Arrays Java Basics - Anfänger-Themen 2
M Scanner-Eingabe nach gewissem Zeitraum überprüfen Java Basics - Anfänger-Themen 2
Neoline Methoden Scanner Methode Java Basics - Anfänger-Themen 9
E Probleme mit Scanner Java Basics - Anfänger-Themen 4
A Java Scanner Funktioniert nicht Java Basics - Anfänger-Themen 2
B Vom scanner in ein Arraylist Java Basics - Anfänger-Themen 7
L Scanner Ausgabe Java Basics - Anfänger-Themen 37
S Zeilenumbruch mit Scanner erkennen Java Basics - Anfänger-Themen 9
O Erste Schritte Scanner mehrere male benutzen (Konsole) Java Basics - Anfänger-Themen 7
W Wie arbeite ich mit dem Typ Scanner? Java Basics - Anfänger-Themen 5
J Input/Output Scanner Input als etwas einsetzen Java Basics - Anfänger-Themen 3
R CMDTools Scanner Fehler Java Basics - Anfänger-Themen 10
D nextInt() nicht für Scanner definiert? Java Basics - Anfänger-Themen 2
N Operatoren Suchen nach einer bestimmten Eingabe (durch Scanner) Java Basics - Anfänger-Themen 7
F Scanner Problem Java Basics - Anfänger-Themen 8
T Variablen Array mit Scanner befüllen Java Basics - Anfänger-Themen 6
C Java Scanner einlesen von txt Dokument InputMismatch Java Basics - Anfänger-Themen 9
b1ck Scanner schließen, erneute Verwendung Java Basics - Anfänger-Themen 12
F Scanner - nextLine() gibt leeren String zurück Java Basics - Anfänger-Themen 2
T Problem mit Scanner. Java Basics - Anfänger-Themen 4
J Methode über Scanner aufrufen Java Basics - Anfänger-Themen 15
J Erste Schritte Scanner negative zahl einlesen und verwenden. Java Basics - Anfänger-Themen 6
W Methoden Probleme mit der Scanner Methode Java Basics - Anfänger-Themen 2
Silvascus Scanner Problem Java Basics - Anfänger-Themen 5
W Erste Schritte import java.util.scanner funktioniert nicht Java Basics - Anfänger-Themen 2
TheMenox Error bei Scanner - woher? Java Basics - Anfänger-Themen 14
D Fehler bei String eingabe via Scanner Java Basics - Anfänger-Themen 6
F Problem do while Schleife und Scanner Java Basics - Anfänger-Themen 2
O POI Apache sheet scanner Java Basics - Anfänger-Themen 1
A regulären Ausdruck mit Hilfe der Klasse Scanner in einem String finden Java Basics - Anfänger-Themen 2
F Array mit Scanner-Werten Java Basics - Anfänger-Themen 4
M Input/Output Scanner schließt nicht Java Basics - Anfänger-Themen 2
M Scanner class Java Basics - Anfänger-Themen 6
K Mit Scanner aus einer txt Datei lesen und jede Person mit name, vorname, geburtsdatum speichern Java Basics - Anfänger-Themen 5
S Array mit "foreach"-Schleife und nextInt (aus Scanner) beschreiben Java Basics - Anfänger-Themen 6
G Strings mit Scanner (nextLine) einlesen Java Basics - Anfänger-Themen 7
Q Scanner auf eine Zahl beschränken Java Basics - Anfänger-Themen 2
S Sonderzeichen '|' (u007C) mit Scanner einlesen Java Basics - Anfänger-Themen 1
T Scanner lässt sich nicht importieren Java Basics - Anfänger-Themen 1
R scanner in String funktioniert nicht Java Basics - Anfänger-Themen 1
P scanner ein Double einlesen Java Basics - Anfänger-Themen 10
A InputMismatchException mit Scanner Java Basics - Anfänger-Themen 6
J scanner, String einlesen und vergleichen Java Basics - Anfänger-Themen 3
B Input/Output Scanner-Probleme bei String-Lesen Java Basics - Anfänger-Themen 3
P Variablen Abfangen von eingaben per java.util.Scanner und weiter Verarbeitung Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben