leere Konsoleneingabe

lukengda

Mitglied
Hallo zusammen! Ich möchte mit einem Scanner einen String füllen, wenn "a" -> mache das, wenn "b" -> mache dies. wenn NICHTS also "" also einfach nur mit return bestetigt wurde soll NICHTS passieren... Bis jetzt wartet er weiterhin auf eine Eingabe... Ich habe ein Forums-Thread gelesen(http://www.java-forum.org/hausaufgaben/91299-eingabe-uberpruefung.html)Ich konnte es aber leider noch nicht umsetzen.
Bitte hier einfügen:
Java:
/**
  *
  * Beschreibung
  *
  * @version 1.0 vom 10.11.2010
  * @author Lukengda
  */
import java.util.Scanner;
public class test {

  public static void main(String[] args) {

  Scanner sc = new Scanner ( System.in );
  System.out.println("Wenn sie \"a\" oder \"b\" wählen wollen, dann machen sie dies, sonsten einfach bestätigen");
  String zahl = sc.next();
  System.out.println(zahl);
  }
}

Vielen Dank auch für kleine Tipps!

Lukengda
 
ich glaube nicht, dass er ein 2. mal auf die Eingabe wartet...
Du kannst ja jetzt
Code:
zahl
(warum auch immer eine Variable wo etweder a oder b drin ist "zahl" heißt) wie du möchtest auswerten:
[JAVA=16]
if (zahl.equals("a")) {
System.out.println("a wurde eingegeben");
}
[/code]
 
in der Theorie klappt dies, in unserem Schulprogramm jedoch nicht:
Der Scanner in Zeile 84 wird jetzt einfach übersprungen!
Java:
/**
  *
  * SSD-Planer
  *
  * @version 1.1 vom 09.11.2010
  * @author Markus, Janis & Lukas
  */
import java.util.Scanner;
public class ssd_planer2 {

  public static void main(String[] args) {
  //Vorbereitung
    Scanner sc = new Scanner ( System.in );
    boolean beGesammt = false;
  do{
      //Variablendeklaration und -initialisierung
      System.out.println("+ + + + + + + + +Varaiblenabfrage+ + + + + + + + +\n");
      final int zeilengroesse = 100;
      int menueauswahl;
      System.out.print("Websiteanfragen: ");
      long websiteanfragen = sc.nextLong();
      System.out.print("Anzahl der Seitenaufrufe: ");
      long seitenanfragen = sc.nextLong();
      System.out.print("Durchschnittliche Serverzugriffe pro Tag: ");
      long serverzugriffe = sc.nextLong();
      System.out.print("Speicherdauer eines Log-Files [Tage]: ");
      long speicherdauer = sc.nextLong();
      long ergebnisF1;
      double ergebnisF2;
      System.out.print("Wie viele 100GB SSD-Speichermodule sind verfügbar? ");
      int anz100gb = sc.nextInt();
      System.out.print("Wie viele 250GB SSD-Speichermodule sind verfügbar? ");
      int anz250gb = sc.nextInt();
      System.out.print("Wie viele 400GB SSD-Speichermodule sind verfügbar? ");
      int anz400gb = sc.nextInt();
      final int groesse100 = 100;
      final int groesse250 = 250;
      final int groesse400 = 400;
      String weiter = "";
      boolean be = true;

      System.out.println("\n+ + + + + + + + + + + + ++ + + + + + + + + + + + +");
      System.out.println("__________________________________________________\n");

    //Programmkopf
      System.out.println("**************************************************");
      System.out.println("** SSD-Planer Version: 1.0 BETA vom 08.11.2010  **");
      System.out.println("**************************************************\n\n");

    //Menue Ausgabe und Abfrage

      while (be){

        System.out.println("+ + + + + + + Auswahl der Funktionen + + + + + + +\n");
        System.out.println("Die Funktionen im Ueberblick: ");
        System.out.println(" #1: Berechnung der Größe eines Logfiles");
        System.out.println(" #2: Berechnung der Speicherkapazitaet fuer Logfiles");
        System.out.println(" #3: ");
        System.out.println(" #4: Berechnung des Aufbau des SSD-Speichermoduls mit Preisen");
        System.out.println(" #5: Programm beenden\n");

        System.out.print("Bitte waehlen Sie eine Funktion (1-4): ");
        menueauswahl = sc.nextInt();
        System.out.println();
        System.out.println("    Sie haben Funktion \"" + menueauswahl + "\" gewaehlt");
        System.out.println("\n+ + + + + + + + + + + + ++ + + + + + + + + + + + +");
        System.out.println("__________________________________________________\n");

        //Die Punkte
        if (menueauswahl == 1) {
          System.out.println("+ + + + + + + + + + Funktion 1 + + + + + + + + + +\n"); //Berechnung der Größe eines Logfiles

          //Beschreibung
            System.out.println("Beschreibung");
            System.out.println("\nBenutzeranfragen pro Webseite: " + websiteanfragen);
            System.out.println("Seitenanzahl pro Besucherbesuch: " + seitenanfragen);

          //Berechnung
            ergebnisF1 = websiteanfragen * zeilengroesse * seitenanfragen;
            
          //Ausgabe
            System.out.println("\nGroesse des Log-File: " + ergebnisF1 + " [Byte]");
            System.out.println("Weiter mit beliebiger Eingabe, mit neuen Werten: \"N\", beenden mit \"B\"");
            weiter = sc.nextLine();

          System.out.println("\n+ + + + + + + + + + + + ++ + + + + + + + + + + + +");
          System.out.println("__________________________________________________\n");
        }

        if (menueauswahl == 2) {
          System.out.println("+ + + + + + + + + + Funktion 2 + + + + + + + + + +\n"); //Berechnung der Speicherkapazitaet fuer Logfiles

          //Beschreibung
            System.out.println("Beschreibung");
            System.out.println("Groesse eines Log-Files: " + websiteanfragen * 100 * seitenanfragen + " [Byte]");
            System.out.println("Anzahl der Serverzugriffe: " + serverzugriffe);
            System.out.println("Dauer der Speicherung: " + speicherdauer);

          //Berechnung
            ergebnisF2 = ((websiteanfragen * serverzugriffe * speicherdauer));
            ergebnisF2 = ergebnisF2/1048576;

          //Ausgabe
            System.out.println("\nBenötigte Speicherkapazitaet fuer Log-Files: " + ergebnisF2 + " [MByte]");
            System.out.println("Weiter mit beliebiger Eingabe, mit neuen Werten: \"N\", beenden mit \"B\"");
            weiter = sc.next();
            System.out.println("\n+ + + + + + + + + + + + ++ + + + + + + + + + + + +");
            System.out.println("__________________________________________________\n");
        }

        if (menueauswahl == 3) {
          System.out.println("+ + + + + + + + + + Funktion 3 + + + + + + + + + +\n");

          //Beschreibung

          System.out.println("");

          System.out.println("\n+ + + + + + + + + + + + ++ + + + + + + + + + + + +");
          System.out.println("__________________________________________________\n");

        }


        if (menueauswahl == 4) {
          System.out.println("+ + + + + + + + + + Funktion 4 + + + + + + + + + +\n");
          //Beschreibung
            System.out.println("Beschreibung");
            System.out.println("\nAnzahl 100GB-Speichermodule: " + anz100gb);
            System.out.println("Anzahl 250GB-Speichermodule: " + anz250gb);
            System.out.println("Anzahl 400GB-Speichermodule: " + anz400gb);

          //Berechnung
            int preisges100 = anz100gb * groesse100;
            int preisges250 = anz250gb * groesse250;
            int preisges400 = anz400gb * groesse400;
            int preisges = preisges100 + preisges250 + preisges400;

          //Ausgabe
            System.out.print("Preis aller verfügbaren SSD-Speichermodulen: " + preisges + "[Euro]");
            System.out.println("Weiter mit beliebiger Eingabe, mit neuen Werten: \"N\", beenden mit \"B\"");
            weiter = sc.next();

          System.out.println("\n+ + + + + + + + + + + + ++ + + + + + + + + + + + +");
          System.out.println("__________________________________________________\n");

        }

        if (menueauswahl == 5 || weiter.equals("B") || weiter.equals("b")){
          be= false;

        }
        if (weiter.equals("N") || weiter.equals("n")){
          be = false;
          beGesammt = true;
        }

    }
  } while (beGesammt);

  System.out.println("Das Programm wurde beendet");


}
}
 
Funktioniert normaler Weise:
Java:
public static void main(String[] args) {
	Scanner sc = new Scanner ( System.in );
	String line = "";
	System.out.println("Programmende mit: end");
	while(!line.equalsIgnoreCase("END")) {
		line = sc.nextLine();
		System.out.println("Eingabe [Laenge:" + line.length() + " Wert: " + line + "]");
	}
	System.out.println("Programm beendet!");
}
Ansonten klein anfangen und größere Umfänge in Methoden auslagern, das macht den Code leichter lesbar und Fehler besser auffindbar.
 
Also, ich habe das Programm jetzt so weit zurück zerlegt, dass keine Schleifen und kein unnötiger code mehr drinne sitzt. ich bin jetzt hierrauf gestoßen: :rtfm:LINK Dort wurde das Problem "umgangen" durch die verwendung von
Java:
import java.util.Scanner;
public class ssd_planer2planen2 {

  public static void main(String[] args) {
  Scanner sc = new Scanner ( System.in );
  
  System.out.println("+ + + + + + + + + + Funktion 1 + + + + + + + + + +\n"); //Berechnung der Größe eines Logfiles

  //Variablendeklaration und -initialisierung
      System.out.println("+ + + + + + + + +Varaiblenabfrage+ + + + + + + + +\n");
      final int zeilengroesse = 100;
      int menueauswahl;
      System.out.print("Websiteanfragen: ");
      long websiteanfragen = sc.nextLong();
      System.out.print("Anzahl der Seitenaufrufe: ");
      long seitenanfragen = sc.nextLong();
      System.out.print("Durchschnittliche Serverzugriffe pro Tag: ");
      long serverzugriffe = sc.nextLong();

      long ergebnisF1;
      String weiter = "";
      boolean be = true;


          //Beschreibung
            System.out.println("Beschreibung");
            System.out.println("\nBenutzeranfragen pro Webseite: " + websiteanfragen);
            System.out.println("Seitenanzahl pro Besucherbesuch: " + seitenanfragen);

          //Berechnung
            ergebnisF1 = websiteanfragen * zeilengroesse * seitenanfragen;

          //Ausgabe
            System.out.println("\nGroesse des Log-File: " + ergebnisF1 + " [Byte]");
            System.out.print("Weiter mit beliebiger Eingabe, mit neuen Werten: \"N\", beenden mit \"B\": ");
            weiter = sc.nextLine();

          System.out.println("\n+ + + + + + + + + + + + ++ + + + + + + + + + + + +");
          System.out.println("__________________________________________________\n");


  }
}
oder mit while
[JAVA=37]while(!weiter.equalsIgnoreCase("END")) {
weiter = sc.nextLine();
}[/code]
 
Zuletzt bearbeitet:
Sorry, hab die Frage vergessen... Er überspringt jetzt mit dem gekürzten Code den Scanner wieder... Es ist das selbe Problem wie in dem obigen Link beschreiben, jedoch kann ich den Lösungsansatz nicht verwenden, da ich ja nextLine verwenden muss...
Aber das Problem ist das selbe. Stichwort EOL/End Of Line würde ich behaupten wenn ich es besser wüsste.. Entschuldigung für meine doofen Fragen ;-)
 

Neue Themen


Zurück
Oben