您的位置:首页 > 编程语言

挑战编程技能(第一章)

2018-01-19 01:20 176 查看

                      一个小费计算程序

以下要求:√表示已完成   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%
4000
)
    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;
    }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: