Java -算法小题API综合习题

5.1.需求:

键盘录入一些1~10日之间的整数,并添加到集合中。直到集合中所有数据和超过200为止。\

public class Test1 {
    public static void main(String[] args) {
        /*
            键盘录入一些1~10日之间的整数,并添加到集合中。直到集合中所有数据和超过200为止。
        */
        //1.创建一个集合用来添加整数
        ArrayList<Integer> list = new ArrayList<>();
        //2.键盘录入数据添加到集合中
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.println("请输入一个整数");
            String numStr = sc.nextLine();
            int num = Integer.parseInt(numStr);//先把异常数据先进行过滤
            if (num < 1 || num > 100){
                System.out.println("当前数字不在1~100的范围当中,请重新输入");
                continue;
            }
            //添加到集合中//细节:
            //num:基本数据类型
            //集合里面的数据是Integer
            //在添加数据的时候触发了自动装箱
            list.add(num);
            //统计集合中所有的数据和
            int sum = getSum(list);
            //对sum进行判断
            if(sum > 200){
            System.out.println("集合中所有的数据和已经满足要求");
            break;
        }
    }

}


    private static int getSum(ArrayList<Integer> list) {
        int sum = 0;
        for (int i = 0; i < list.size(); i++) {
            //i :索引
            //list.get(i);
            int num = list.get(i);
            sum = sum + num;//+=
        }
        return sum;
    }
}

2.需求:

自己实现parseInt方法的效果,将字符串形式的数据转成整数。要求:字符串中只能是数字不能有其他字符最少一位,最多10位日不能开头

public class Test2 {
    public static void main(String[] args) {
        /*
            自己实现parseInt方法的效果,将字符串形式的数据转成整数。要求:
            字符串中只能是数字不能有其他字符最少一位,最多10位日不能开头
        */

        //1.定义一个字符串
        String str = "123";
        //2.校验字符串
        //习惯:会先把异常数据进行过滤,剩下来就是正常的数据。
        if (!str.matches("[1-9]\\d{0,9}")) {
            //错误的数据
            System.out.println("数据格式有误");
        } else {
            //正确的数据
            System.out.println("数据格式正确");
            //3.定义一个变量表示最终的结果
            int number = 0;
            //4.遍历字符串得到里面的每一个字符
            for (int i = 0; i < str.length(); i++) {
                int c = str.charAt(i) - '0';//把每一位数字放到number当中
                number = number * 10 + c;
            }
            System.out.println(number);
            System.out.println(number + 1);
        }
    }

3.需求:

定义一个方法自己实现toBinaryString方法的效果,将一个十进制整数转成字符串表示的二进制

package lx;

public class demo3 {
    public static void main(String[] args) {
        //定义一个方法自己实现toBinaryString方法的效果,将一个十进制整数转成字符串表示的二进制
        int a = 6;
        //method01(a);
      /*  String s = decimalToBinary(a);
        System.out.println(s);*/
        String str = toBinaryString(a);
        System.out.println(str);


    }

    private static String toBinaryString(int n) {
        StringBuffer sb = new StringBuffer();
        while (n != 0) {
            sb.append(n % 2);
            n = n / 2;
        }
        sb.reverse();
        return sb.toString();

    }

    private static String decimalToBinary(int n) {
        // 定义一个标志,用来跳过前导零
        int foundFirstOne = 0;
        StringBuffer sb = new StringBuffer();
        int bit = 0;
        // 特别处理0的情况
        if (n == 0) {
            System.out.println(0);
            System.exit(0);
        }
//0000000000000000 0000000000000000 0000000000000000 0000000000001010
//0000000000000000 0000000000000000 0000000000000000 0000000000000001
        // 从最高位开始向最低位打印二进制表示
        for (int i = 31; i >= 0; i--) {
            // 右移i位后,检查最低位是否为1
            bit = (n >> i) & 1;
            // 找到第一个1后开始输出
            if (bit == 1) {
                foundFirstOne = 1;
            }
            // 输出当前位

            if (foundFirstOne == 1) {
                sb.append(bit);
            }
        }

        return sb.toString();
    }

    private static void method01(int a) {
        String str = Integer.toBinaryString(a);
        System.out.println(str);
    }
}

4.需求:

请使用代码实现计算你活了多少天,用JDK7和JDK8两种方式完成

package lx;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
import java.util.Date;
public class demo4 {
    public static void main(String[] args) throws ParseException {
        //请使用代码实现计算你活了多少天,用JDK7和JDK8两种方式完成
        //JDK7
        //规则:只要对时间进行计算或者判断,都需要先获取当前时间的毫秒值
        //1.计算出生年月日的毫秒值
        String birthday = "2002年9月19日";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
        Date date = sdf.parse(birthday);
        long birthdaytime = date.getTime();
        Date d=new Date();
        long time = d.getTime();
        long sum = time - birthdaytime;
        sum=sum/1000/60/60/24;
        System.out.println(sum);
        //JDK8
        LocalDate ld1=LocalDate.now();
        LocalDate ld2=LocalDate.of(2002,9,19);
        long day = ChronoUnit.DAYS.between(ld2, ld1);
        System.out.println(day);
    }
}

5.需求:

判断任意的一个年份是闰年还是平年要求:用JDK7和JDK8两种方式判断提示:二月有29天是闰年一年有366天是闰年

package lx;
 /*
            判断任意的一个年份是闰年还是平年要求:用JDK7和JDK8两种方式判断提示:
            二月有29天是闰年一年有366天是闰年
        */

import java.time.LocalDate;
import java.util.Calendar;

public class dem05 {
    public static void main(String[] args) {
        //jdk7
        //我们可以把时间设置为2002年3月1日
        Calendar c=Calendar.getInstance();
        c.set(2002,2,1);   //月份的范围:0~11
        //再把日历往前减一天
        c.add(Calendar.DAY_OF_MONTH,-1);
        //看当前的时间是28号还是29号?
        int day1 = c.get(Calendar.DAY_OF_MONTH);
        System.out.println(day1);//平年
        //jdk8
        //月份的范围:1~12
        //设定时间为2002年的3月1日
        LocalDate ld1=LocalDate.of(2002,3,1);
        //把时间往前减一天
        LocalDate ld2 = ld1.minusDays(1);
        //获取这一天是一个月中的几号
        int day2 = ld2.getDayOfMonth();
        System.out.println(day2);
        //true:闰年
        //false:平年
        System.out.println(ld1.isLeapYear());
    }
}

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值