2017-03-26 3 views
0

Ich habe mehrere ähnliche Fragen überprüft und, wenn ich die häufig vorgeschlagene Antwort anwendete, wurde eine Bedingung, die hätte funktionieren sollen, nicht erfüllt.Java - Scanner NoSuchElementException: Keine Zeile gefunden

Mit diesem Code

import java.util.Scanner; 

Scanner console = new Scanner(System.in); 

// ...various code here... 

public void printMenu() 
{ 
    while (true) 
    { 
     System.out.println("\nPlease make a selection:\n" 
       + "1) Access account\n" 
       + "2) Open a new Account\n" 
       + "3) Exit"); 

     String selection = console.nextLine(); 

     if (selection.equals("1")) enterPin(); 
     else if (selection.equals("2")) newOrReturning(); 
     else if (selection.equals("3")) 
     { 
      System.out.println("Thank you for using the BSU Banking App"); 
      System.exit(0); 
     } 
     else System.out.println("Invalid entry"); 
    } 
} 

ich die Störung erhalte,

Exception in thread "main" java.util.NoSuchElementException: No line found 
    at java.util.Scanner.nextLine(Scanner.java:1540) 
    at Menu.printMenu(Menu.java:56) 
    at Menu.runMenu(Menu.java:31) 
    at Main.main(Main.java:29) 

Es wurde vorgeschlagen, dass while(console.hasNextLine()) vor console.nextLine() verwendet werden, aber wenn ich beschäftigt, dass

public void printMenu() 
{ 
    while (console.hasNextLine()) 
    { 
     System.out.println("\nPlease make a selection:\n" 
       + "1) Access account\n" 
       + "2) Open a new Account\n" 
       + "3) Exit"); 

     String selection = console.nextLine(); 

     if (selection.equals("1")) enterPin(); 
     else if (selection.equals("2")) newOrReturning(); 
     else if (selection.equals("3")) 
     { 
      System.out.println("Thank you for using the BSU Banking App"); 
      System.exit(0); 
     } 
     else System.out.println("Invalid entry"); 
    } 
} 

Jetzt führt es nicht einmal den Code aus, was impliziert, dass es keine nextLine gibt. Irgendwelche Vorschläge? Ich entschuldige mich, wenn ich Informationen verpasst habe - wenn es soweit ist, werde ich sofort bearbeiten.

Edit: erklärte mein Problem falsch.

+1

Statt uns zu fragen, dies für Sie zu lösen, können Sie einen Debugger verwenden soll. Setze einen Haltepunkt, single step den Code, um zu sehen, was passiert, untersuche die Werte/Objekte in den Variablen, die das Programm benutzt. –

+0

bitte try boolean trueOrFalse = true; und dann setze es in deine Testbedingung für die while-Schleife und dann bei if (selection.equals ("3") {trueOrFalse = false;} – abcOfJavaAndCPP

+0

Ich entschuldige mich - ich habe mehr nach Vorschlägen gefragt, als dass jemand die ganze Kleinarbeit für mich erledigt hat. Ich werde das tun, danke. –

Antwort

0

bitte versuchen Sie es mit diesen

public void printMenu() 
{  boolean trueOrFalse=true; 

     System.out.println("\nPlease make a selection:\n" 
       + "1) Access account\n" 
       + "2) Open a new Account\n" 
       + "3) Exit"); 

     String selection = console.nextLine(); 

    while (trueOrFalse) 
    { 


     if (selection.equals("1")) 
     { 
      enterPin(); 
      trueOrFalse=false; 
     } 
     else if (selection.equals("2")) 
     { 
      newOrReturning(); 
      trueOrFalse=false; 
     } 
     else if (selection.equals("3")) 
     { 
      System.out.println("Thank you for using the BSU Banking App"); 
      trueOrFalse=false; 
     } 
     else 
     { 
      System.out.println("Invalid entry"); 
      System.out.println("\nPlease make a selection:\n" 
       + "1) Access account\n" 
       + "2) Open a new Account\n" 
       + "3) Exit"); 

      selection = console.nextLine(); 
     } 
    } 
    System.exit(0); 
} 
Verwandte Themen