2014-10-03 44 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