作业4 (更正答案版)

1、闰年计算器

1.定义scanner对象,调用nextInt方法键盘录入一个年份

2.调用getInstance()方法获取calendar对象

3.调用calendar中的set方法设置年,月,日

由于国外的月份和国内的月份不一样,所以,当我们设置2月的时候其实代表的是我们国内的3月年份:我们输入的年份月份:2月(实际上是我国3月份)

4.调用calendar中的add方法,让3月1日减去1天,就是二月的最后一天

5.调用calendar中的get方法,获取得出的日期

6.输出输入的年份2月有多少天

7.判断,如果得出的日期==28天,证明是平年,共365天,否则就是闰年,共366天

public class Test {
    public static void main(String[] args) throws ParseException {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入年份:");
        int year = sc.nextInt();
        Calendar instance = Calendar.getInstance();
//        instance.set(Calendar.YEAR,year);
//        instance.set(Calendar.MONTH,2);
//        instance.set(Calendar.DAY_OF_MONTH,1);
        instance.set(year,2,1); // 3月1日
        instance.add(Calendar.DATE,-1);
        int day = instance.get(Calendar.DATE);
        System.out.println("二月有" + day + "天");
        if(day == 28){
            System.out.println("共365天");
        }else {
            System.out.println("共366天");
        }
    }
}

 2、计算入职多少年

1.接受键盘录入的入职日期字符串

2.将日期字符串转换为日期对象,方便获取毫秒值

3.获取入职日期的毫秒值

4.获取当前系统的毫秒值

5.计算时间差

6.将单位换算成天

7.将天换算成年,并打印

public class Test {
    public static void main(String[] args) throws ParseException {
        Scanner sc = new Scanner(System.in);
        String start = sc.next();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date startDate = sdf.parse(start);
        long startDateTime = startDate.getTime();
//        Date now = new Date();
//        long nowTime = now.getTime();
        long nowTime = System.currentTimeMillis();
        long s = nowTime - startDateTime;
        long days = s / 1000 / 60 / 60 / 24;
        int years = (int) (days / 365);
        System.out.println(years);
    }
}

3、添加商品后按照价格从低到高排序

1.创建scanner对象,输入要添加商品的价格

2.定义老数组,存储原始商品的价格

3.定义新数组,将新商品的价格添加到新数组中

4.将老数组中的价格复制到新数组中

5.将新添加的商品价格放到新数组中

6.重新排序

7.展示排序之后的新数组

public class Test {
    public static void main(String[] args) throws ParseException {
        Scanner sc = new Scanner(System.in);
        System.out.print("请您输入新的商品价格:");
        double newPrice = sc.nextDouble();
        double[] old = {11.2, 66, 42, 14.6, 72.35};
        double[] prices = Arrays.copyOf(old, old.length+1);
        prices[prices.length - 1] = newPrice;
        Arrays.sort(prices);
        System.out.println(Arrays.toString(prices));
    }
}

4、计算在 -10.8 到5.9 之间,绝对值大于6 或者小于2.1 的整数有多少个?

public class Test {
    public static void main(String[] args) throws ParseException {
        // 计算在 -10.8 到5.9 之间,绝对值大于6 或者小于2.1 的整数有多少个?
        double a = -10.8;
        double b = 5.9;
        int count = 0;
        for (double i = Math.ceil(a); i <= b; i++) {
            if(Math.abs(i) > 6 || Math.abs(i) < 2.1){
                // System.out.println(i);
                count++;
            }
        }
        System.out.println("共有整数:" + count + "个");
    }
}

 5、BigDecimal

1.定义scanner对象,输入要转账的金额,因为用BigDecimal需要传递string,所以我们调用next方法录入
2.调用转换金额的方法,参数传递我们录入的金额
3.定义转换金额的方法,参数为string类型
4.创建两个BigDecimal对象,一个传递转账的金额,一个传递字符串的100
5.调用BigDecimal对象的multiply乘以100,将元转成分
6.调用BigDecimal的divide方法,除以108,保留2位小数,2位小数后面的直接省略,将分转成元
7.将得出的BigDecimal对象调用doubleValue方法转成double类型,并将double类型的结果返回

public class Test {
    public static void main(String[] args) throws ParseException {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您要转的金额:");
        String money = sc.next();
        double v = yuanToFen(money);
        System.out.println(v);
    }

    private static double yuanToFen(String money) {
        BigDecimal money1 = new BigDecimal(money);
        BigDecimal money2 = new BigDecimal("100");
        BigDecimal multiply = money1.multiply(money2);
        BigDecimal divide = multiply.divide(money2, 2, RoundingMode.FLOOR);
        double v = divide.doubleValue();
        return v;
    }
}

  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值