编写加调试,1个小时搞定,感觉编码的速度有所提高啊,不错不错!
业务逻辑:
1. 信用卡本期账单金额=期初账单金额+本期消费金额-本期还款金额
2.信用卡剩余信用额度=该客户信用额度总额-本期账单金额(小于0时,提示“该客户信用额度已超限”)
声明:此业务逻辑适用于本练习,与现实情况可能有所出入。
代码如下:
//Java how to program, 10th edition, Exercise 4.18:Credit Limit Calculator
//by Pandenghuang@163.com
/**
*问题陈述:
*(Credit Limit Calculator) Develop a Java application that determines whether any of several
*department-store customers has exceeded the credit limit on a charge account. For each customer,
*the following facts are available:
*a) account number
*b) balance at the beginning of the month
*c) total of all items charged by the customer this month
*d) total of all credits applied to the customer’s account this month
*e) allowed credit limit.
*The program should input all these facts as integers, calculate the new balance (= beginning balance
*+ charges – credits), display the new balance and determine whether the new balance exceeds the
*customer’s credit limit. For those customers whose credit limit is exceeded, the program should display
*the message "Credit limit exceeded".
*/
import java.util.*;
public class CreditLimitCal
{
public static void main(String[] args)
{
Scanner input=new Scanner(System.in);
int accountNo=0;
int balanceBegin=0;
int balanceNew=0;
int charges=0;
int creditsApplied=0;
int creditLimit=0;
int creditLeft=0;
int inputTimes=1;
int validInputTimes=0;
System.out.printf("开始输入第%d位客户\n",inputTimes);
//录入客户号
System.out.print("请输入客户号(输入-1结束输入):");
accountNo=input.nextInt();
if (accountNo==-1)
{
System.out.println("您没有输入足够的有效数据。");
return;
}
//录入期初账单金额
System.out.print("请输入该客户的期初账单金额(输入-1结束输入):");
balanceBegin=input.nextInt();
if (balanceBegin==-1)
{
System.out.println("您没有输入足够的有效数据。");
return;
}
//录入还款总额
System.out.print("请输入该客户的还款总额(输入-1结束输入):");
charges=input.nextInt();
if (charges==-1)
{
System.out.println("您没有输入足够的有效数据。");
return;
}
//录入消费总额
System.out.print("请输入该客户的消费总额(输入-1结束输入):");
creditsApplied=input.nextInt();
if (creditsApplied==-1)
{
System.out.println("您没有输入足够的有效数据。");
return;
}
//录入客户信用总额度
System.out.print("请输入该客户的信用总额度(输入-1结束输入):");
creditLimit=input.nextInt();
if (creditLimit==-1)
{
System.out.println("您没有输入足够的有效数据。");
return;
}
++inputTimes;
++validInputTimes;
balanceNew=balanceBegin+creditsApplied-charges;
creditLeft=creditLimit-balanceNew;
if(balanceNew>creditLimit)
System.out.printf("客户%d的信用额度已超限!!!\n",accountNo);
else
System.out.printf("客户%d的最新账单金额为:%d RMB,剩余信用额度为%d RMB\n\n",accountNo,balanceNew,creditLeft);
while (accountNo!=-1 && balanceBegin!=-1 && charges!=-1 && creditsApplied!=-1 && creditLimit!=-1 )
{
System.out.printf("\n开始输入第%d位客户\n",inputTimes);
//录入客户号
System.out.print("请输入客户号(输入-1结束输入):");
accountNo=input.nextInt();
if (accountNo!=-1)
{
//录入期初账单余额
System.out.print("请输入该客户的期初账单金额余额(输入-1结束输入):");
balanceBegin=input.nextInt();
if (balanceBegin!=-1)
{
//录入还款总额
System.out.print("请输入该客户的还款总额(输入-1结束输入):");
charges=input.nextInt();
if (charges!=-1)
{
//录入消费总额
System.out.print("请输入该客户的消费总额(输入-1结束输入):");
creditsApplied=input.nextInt();
if (creditsApplied!=-1)
{
//录入信用总额度
System.out.print("请输入该客户的信用总额度(输入-1结束输入):");
creditLimit=input.nextInt();
if (creditLimit!=-1)
{
//最新账单金额计算
++inputTimes;
++validInputTimes;
balanceNew=balanceBegin+creditsApplied-charges;
creditLeft=creditLimit-balanceNew;
if(balanceNew>creditLimit)
System.out.printf("客户%d的信用额度已超限!!!\n",accountNo);
else
System.out.printf("客户%d的最新账单金额为:%d RMB,剩余信用额度为%d RMB\n\n",accountNo,balanceNew,creditLeft);
}
else
{
System.out.println("\n\n您已结束数据输入。");
break;
}
}
else
{
System.out.println("\n\n您已结束数据输入。");
break;
}
}
else
{
System.out.println("\n\n您已结束数据输入。");
break;
}
}
else
{
System.out.println("\n\n您已结束数据输入。");
break;
}
}
else
{
System.out.println("\n\n您已结束数据输入。");
break;
}
}
System.out.print("\n*******************************************************************\n");
System.out.printf("您总共输入了%d组有效数据。程序结束。\n",validInputTimes);
System.out.print("*******************************************************************\n\n\n");
}
}
运行截屏如下: