2016-08-01 4 views
1

내 코드에 약간의 어려움이 있습니다.스캐너 클래스 유효성 검사

어떻게 든이 $ 30 스캔 대신 새로운 입력을 요구 계속 D-돌아 가기 주 메뉴를보고 - C 철수 - 금액 $ 30 입금 후에는 저장 메뉴 A- 예금 B를 다시 가져 가정한다.

나를 도우려는 사람에게 감사드립니다. 스캐너 검사와

package Menu; 

import java.util.Scanner; 

enum Options { 
    A, B, C, D 
} 

public class Menu { 
    public Scanner sc = new Scanner(System.in); 

    public static void main(String[] args) { 
     Menu menu = new Menu(); 
     menu.mainMenu(); 
    } 

    public void mainMenu() { 
     String userChoice; 
     boolean quit = false; 

     do { 
      System.out.println("Bank Menu" + "\nA: Savings" + "\nB: Checking" 
        + "\nC: Exit"); 

      userChoice = sc.next().toUpperCase(); 

      switch (userChoice) { 
      case "A": 
       savingMenu savMen = new savingMenu(); 
       break; 
      case "B": 
       break; 
      case "C": 
       quit = true; 
       break; 
      default: 
       System.out.println("Wrong entry."); 
       break; 
      } 
      System.out.println(); 

     } while (!quit); 
     sc.close(); 
     System.exit(0); 
    } 
} 

package Menu; 

import Savings.Savings; 

public class savingMenu extends Menu { 
    Savings sav = new Savings(); 

    public savingMenu() { 
     String userChoice; 
     boolean quit = false; 

     /** 
     * A - Deposit B - Withdraw C - Report D - Return Menu 
     */ 
     do { 
      System.out.println("Savings Menu" + "\nA: Deposit " 
        + "\nB: Withdraw" + "\nC: Report" 
        + "\nD: Return to Bank Menu"); 

      userChoice = sc.nextLine().toUpperCase(); 
      switch (userChoice) { 
      case "A": 
       sav.makeDeposit();    
       break; 
      case "B": 
       sav.makeWithdraw(); 
       break; 
      case "C": 
       sav.doMonthlyReport(); 
      case "D": 
       quit = true; 
       super.mainMenu(); 
      default: 
       System.out.println("Wrong choice."); 
       break; 
      } 
      System.out.println(); 

     } while (!quit); 
    } 
} 
+0

귀하의 코드가 4 개 이상의 클래스입니다 ... 의심스러운 부분에만 게시하는 코드를 간소화하십시오 .... 우리는 당신을 더 빨리 도울 수 있도록 .... –

+0

Ok 클래스 2 개를 제거했습니다 (계산식) –

+0

무엇을합니까? 출력 모양은? 명령 줄이 어떻게 생겼는지 붙여 넣을 수 있습니까? – Drgabble

답변

0

hasNextLine()

+0

스위치 앞에 이것을 추가하면됩니다. 무한 루프. 'if (sc.hasNextLine()) { userChoice = sc.nextLine(). toUpperCase();' –

0

좋아 나는 오류를 발견 아니면 내가 잘못 이해하고 말을해야와 다음 줄이있다.

게시물에서 삭제 한 수업 중 하나가 실제로 혼란을 일으켰습니다.

public void validateDepositAmount() {  
    boolean isDoubleDigit = false; 

    System.out.println("How much would you like to deposit?"); 

    //try (Scanner sc = new Scanner(System.in)) { 
    Scanner sc = new Scanner(System.in); 

    do {        
      if (sc.hasNextDouble()) { 
       totalDeposit = sc.nextDouble(); 

       if(totalDeposit >= 0) { 
        isDoubleDigit = true; 
       } else { 
        System.out.println("Your input must higher than 0."); 
        sc.nextLine(); 
       }     
      } else { 
       System.out.println("Please put an amount."); 
       sc.nextLine();     
      } 
     } while (isDoubleDigit == false); 
    //} catch (Exception e) { 
     //e.printStackTrace(); 
    //} 
} 

그래서 기본적으로 리소스를 사용해 보았습니다.

관련 문제