2014-10-03 46 views
0

嗨,這是我的解決方案,似乎是一個簡單的問題。只需從用戶那裏獲取一些數據即可計算用戶是否超出了他的限制並且如果是的話顯示一條消息。我用過哨兵控制的重複。我可以在第一次輸入-1時退出程序。但之後,它不起作用,我不能退出程序。這是我的代碼。從deitals如何program9th難以控制的重複邏輯。問4.18

import java.util.Scanner; 

public class CreditLimitCalculator { 

    public void getNewBalance(){ 

    int acc; 
    int oldBal; 
    int debit; 
    int credit; 
    int limit; 

    Scanner input = new Scanner(System.in); 

    System.out.println("Enter account number or -1 to exit"); 
    acc = input.nextInt(); 

    while (acc != -1){ 
     System.out.println("Enter old balance"); 
     oldBal = input.nextInt(); 

     System.out.println("Enter total debits"); 
     debit = input.nextInt(); 

     System.out.println("Enter total credit"); 
     credit = input.nextInt(); 

     System.out.println("Enter Limit"); 
     limit = input.nextInt(); 

     int newBalance = oldBal + credit - debit; 

     if (newBalance < limit){ 
      System.out.println("Credit Limit exceeded"); 

     } 
    } 
} 
} 

我改變了代碼如下:

import java.util.Scanner; 

public class CreditLimitCalculator { 

    public void getNewBalance(){ 

    int acc; 
    int oldBal; 
    int debit; 
    int credit; 
    int limit; 

    Scanner input = new Scanner(System.in); 

    System.out.println("Enter account number or -1 to exit"); 
    acc = input.nextInt(); 

    while (acc != -1){ 
     System.out.println("Enter old balance"); 
     oldBal = input.nextInt(); 

     System.out.println("Enter total debits"); 
     debit = input.nextInt(); 

     System.out.println("Enter total credit"); 
     credit = input.nextInt(); 

     System.out.println("Enter Limit"); 
     limit = input.nextInt(); 

     int newBalance = oldBal + credit - debit; 

     if (newBalance < limit){ 
      System.out.println("Credit Limit exceeded"); 

      System.out.println("Enter account number or -1 to exit"); 
      acc = input.nextInt(); 

     } 
    } 
    } 
} 

現在的工作,如果餘額不足的限制,被顯示的消息說信用額度exceded,但如果if語句是不正確的,即帳戶餘額超過了限制,它似乎跳過了最後2行代碼,並直接跳回到「輸入新餘額。我不明白,因爲我添加的2個新行似乎在哪個語句內

+0

「之後它不起作用」:它應該做什麼,它做的是什麼? – 2014-10-03 16:05:25

+0

每次到達應該詢問賬戶號碼的哪個語句的底部,並要求用戶按-1退出(如果需要),但它似乎只執行最後2行代碼(如果該限制有效)。 – 2014-10-03 18:26:43

回答

1

您的循環基於0中的值,它在循環中從不改變。

更新:我修復了代碼的縮進;你描述的新問題現在應該有一個明顯的解決方法。

+0

感謝這幫助我找到了答案,但它仍然不適用於所有情況 – 2014-10-03 18:27:41

+0

謝謝你是正確的,只要你縮進它的歡呼! – 2014-10-03 19:08:34