一个小费计算程序
以下要求:√表示已完成 x表示未完成
★对于账单金额和小费比例,确保用户只能输入数值。如果用户输入的不是数值,则显示相应的提示信息并退出程序。(√)
★不再是显示错误消息并退出,而是在用户输入合法数值之前,一直提示输入。(√)
★不允许用户输入负值(√)
★将程序分解为做计算的函数(√)
★使用用户图形界面(GUI)实现这个程序。当有任何值变化时,自动在界面中更新这些值。(x)
★不再是让用户以百分比形式输入小费比例,而是让用户通过拖动一个滑动条表示对服务员的满意度,区间是5%~20%(x)
主函数:
import java.util.Scanner;
public class Calculate_tip {
public static void main(String[] args) {
// TODO Auto-generated method stub
tip customer=new tip();
Scanner scanner=new Scanner(System.in);
System.out.println("请输入账单金额:");
do { //判断输入的账单金额是否符合常理,不符合重新输入直到符合为止
boolean flag=false;
double total=scanner.nextDouble();
if(total>0) {
customer.set_total(total);
flag=true;
}
else
System.out.println("输入有误,请重新输入:");
if(flag)
break;
}while(true);
System.out.println("请输入顾客的小费比例,输入5-15中的百分数");
do { //判断客户的小费比例是否在5-15之间,不在重新输入
boolean flag=false;
double ratio=scanner.nextDouble();
ratio/=100;
if(ratio>=.05&&ratio<=.15) {
customer.set_ratio(ratio);;
flag=true;
}
else
System.out.println("输入有误,请重新输入:");
if(flag)
break;
}while(true);
scanner.close();
System.out.println("顾客应付小费:"+customer.return_tip()); //输出结果
System.out.println("顾客应付总额为:"+customer.return_Totalamount());
}
}
类:
public class tip {
private double total; //金额
private double tip; //小费
double ratio; //小费比例(5%-15%)
void set_ratio(double ratio)
{
this.ratio=ratio;
}
void set_total(double total)
{
this.total=total;
}
double return_tip()
{
tip=total*ratio;
tip=this.point_double(tip);
return tip;
}
double point_double(double num) //四舍五入保留小数点后俩位
{
num*=1000;
if(num/10>=5)
return ((int)num/1000+.01);
else
return((int)num/1000);
}
double return_Totalamount()
{
return this.tip+this.total;
}
}