【JAVA】基本数据类型、运算符与表达式习题

1.月还款计算,代码如下:(自己用的IDEA编辑器,下面是自己写的代码~)

package com.lanlanla.demo;

import java.util.Scanner;

/**
 * @Author: lilanlan
 * @Description: Math.pow(3,4)=81
 * @Date: 2019-09-11 19:41
 */
public class MonthlyRepayment {
    public static void main(String []args)
    {
        double intereStrate;
        double totalLoans;
        int years;
        System.out.println("请以依次入:利率、贷款总额、还款年数/n");//println只能带一个基本数据类的参数,并换行
        Scanner input=new Scanner(System.in);
        intereStrate=input.nextDouble();
        totalLoans=input.nextDouble();
        years=input.nextInt();
        double monthlyRepayment=(totalLoans*intereStrate)/(1-(1/Math.pow(1+intereStrate,years*12)));
        System.out.printf("MonthlyRepayment =%.2f",monthlyRepayment);//printf用于所有格式的输出
    }
}

运行调试结果如下:

 2.换零钱问题(现在还有问题)

我的代码:(我的思想:一直向下减,举例10.85元-10元的-0.25元的-0.1元的-0.05元的-0.01元的)

package com.lanlanla.demo;
import javax.swing.JOptionPane;
/**
 * @Author: lilanlan
 * @Description: 函数用法参考:https://www.cnblogs.com/lls1350767625/p/7663667.html
 * @Date: 2019-09-11 20:04
 */
public class ChangeMoney {
    public static void main(String[] args) {
        String str = JOptionPane.showInputDialog("Enter a double number:");//为什么是String类型不可以是double吗?
        double d = Double.parseDouble(str);
        JOptionPane.showMessageDialog(null, "您输入的总钱数是" + d);//假如是10.85
        int dolloarNum = (int) d;//一美元的数目=10
        int quarterNum = (int) (((d - dolloarNum) / 0.25));//两角五分的数目=小数部分除0.25  =0.85/0.25=3---0.05
        int dimeNum = (int) ((d - dolloarNum - quarterNum * 0.25) / 0.1);//一角钱数目0.05*10=0个
        int nickelNum = (int) ((d - dolloarNum - quarterNum * 0.25 - dimeNum * 0.1) / 0.05);//五分的数目 0.05/5*100=1
        double penny = d - (double) dolloarNum - (double) quarterNum * 0.25 - (double) dimeNum * 0.1 - (double) nickelNum * 0.05;
        //这个地方penny的值竟然是0.049999999,不应该是0吗?
        int pennyNum = (int) (penny / 0.01);//一分钱的数目
//为什么一分钱老是算不对?应该10.85一份钱数目是0结果输出是4,发现(int)(0/100)或者(int)(0*100)结果输出是4??

        
        
        JOptionPane.showMessageDialog(null, "一美元的数目是" + dolloarNum
                + "两角五分的数目是" + quarterNum + "一角钱的数目是" + dimeNum + "五分的数目是" + nickelNum + "一分钱的数目是" + pennyNum);


    }
}    
        

 运行结果:输入10.85

debug调试:

疑问:为什么一分钱老是算不对?应该10.85一分钱数目是0但是结果输出是4,
发现(int)(0/100)或者(int)(0*100)结果输出是4??

这里面和整型转换什么的相关吗?还是我的计算公式有问题?o(╥﹏╥)o,时间不够了,我要接着向下看了。回来明天再回来看看叭。

发布了68 篇原创文章 · 获赞 20 · 访问量 6900

猜你喜欢

转载自blog.csdn.net/qq_43633973/article/details/100747312