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;
}
}