java刷题-day1

今天是刚开始使用java刷题的第一天!以后我也会一直坚持分享每天刷的题目以及解题思路!~

第一题:猴子吃桃问题:

猴子吃桃问题。猴子第一天摘下若干个桃子,当时就吃了一半,还不过瘾,就又吃了一个。第二天又将剩下的桃 子吃掉一半,又多吃了一个。以后每天都吃前一天剩下的一半零一个。到第 10 天在想吃的时候就剩一个桃子了,求 第一天共摘下来多少个桃子?

先看一下我的递推思路:

然后直接拿上公式去写

java 复制代码
import java.util.Scanner;

public class day1 {
    //猴子吃桃问题。猴子第一天摘下若干个桃子,当时就吃了一半,还不过瘾,就又吃了一个。第二天又将剩下的桃
    //子吃掉一半,又多吃了一个。以后每天都吃前一天剩下的一半零一个。到第 10 天在想吃的时候就剩一个桃子了,求
    //第一天共摘下来多少个桃子?
    public static void main(String[] args) {
        int num = 1; // 第10天剩下1个桃子

        // 从第9天逆推到第1天
        for (int i = 9; i >= 1; i--) {
            num = (num + 1) * 2;
            System.out.println("第" + i + "天有 " + num + " 个桃子");
        }

        System.out.println("第一天共摘下来 " + num + " 个桃子");
    }
}

第二题:转化字符串

输入一个字符,判断它是否为小写字母,如果是,将它转换成大写字母,否则,不转换

这里我采用StringBuilder拼接的方法

java 复制代码
import java.util.Scanner;
public class day1 {
    public static void main(String[] args) {
        //输入一个字符,判断它是否为小写字母,如果是,将它转换成大写字母,否则,不转换
        Scanner scanner = new Scanner(System.in);
        String str = scanner.nextLine();

        StringBuilder res = new StringBuilder();//使用拼接方法一个一个来
        for (int i = 0; i < str.length(); i++) {
            //获取每一位判断是否是小写
            char ch = str.charAt(i);
            if (Character.isLowerCase(ch)){
                //是小写就转换为大写
                res.append(Character.toUpperCase(ch));
            }else{
                res.append(ch);//否则不改变
            }
        }
        System.out.println(res.toString());
    }
}

第三题:输入日期判断天数

编写程序,对输入的年、月、日,给出该天是该年的第多少天? 例如:2022年1月15日,是该年的第15天

这里我采用的是数组累加的方式,把每一月的天数存进去,然后额外判断一下闰年。

计算方式:先算输入月份的前几个月的天数,因为那几月是完全过了的,比如我说八月7号,那肯定说明1-7月都过完了,还剩8月的7天,也就是说最后再加上我们输入的天数就可以了

java 复制代码
import java.util.Scanner;
public class day1 {
    //编写程序,对输入的年、月、日,给出该天是该年的第多少天?
    //例如:2022年1月15日,是该年的第15天
    public static void isDays(int year,int month,int day) {
        int[] d = {31,28,31,30,31,30,31,31,30,31,30,31};
        if(year%4==0&&year%100!=0||year%400==0){
            d[1]=29;
        }
        int sum_day=0;
        //前几个月单独计算,然后再加上输入的多少号就可以了
        for (int i = 0; i < month-1; i++) {
            sum_day+=d[i];
        }
        sum_day+=day;
        System.out.println(+year+"年"+month+"月"+day+"日是该年的第"+sum_day+"天");
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入年数");
        int year = sc.nextInt();
        System.out.println("请输入月份");
        int month = sc.nextInt();
        System.out.println("请输入天数");
        int day = sc.nextInt();
        isDays(year,month,day);
    }
}

第四题:10000内的完数

编程求 1~10000 之间的所有"完全数",完全数是该数的所有因子之和等于该数的数。例如,6 的因子有 1、2、 3,且 6=1+2+3,所以 6 是完全数。

java 复制代码
public class day1 {
    //求 1~10000 之间的所有"完全数",完全数是该数的所有因子之和等于该数的数。
    // 例如,6 的因子有 1、2、3,且 6=1+2+3,所以 6 是完全数。
    public static boolean perfectNumber(int num ){
        if (num<2) {
            return false;
        }
        // 找出所有能整除num的数(因子)
        int sum=0;
        for (int i = 1; i < num; i++) {
            if(num % i == 0){
                sum += i;
            }
        }
        return sum==num;//返回满足因子之和等于这个数也就是完数
    }

        public static void main3(String[] args) {
            for (int i = 0; i <= 10000; i++) {
                if(perfectNumber(i)){
                    System.out.println(i);
                }
            }
    }
}

以上是今天分享的四个题目,点点关注天天更新~

相关推荐
讓丄帝愛伱1 小时前
excel导出实例
java·python·excel
温轻舟1 小时前
禁毒路上,任重道远 | HTML页面
开发语言·前端·javascript·css·html·温轻舟
p***q781 小时前
SpringBoot实战:高效实现API限流策略
java·spring boot·后端
学历真的很重要1 小时前
Hello-Agents —— 03大语言模型基础 通俗总结
开发语言·人工智能·后端·语言模型·自然语言处理·面试·langchain
3***16101 小时前
【JavaEE】Spring Boot 项目创建
java·spring boot·java-ee
6***v4171 小时前
VScode 开发 Springboot 程序
java·spring boot·后端
t***31651 小时前
SpringBoot中自定义Starter
java·spring boot·后端
橘子编程1 小时前
经典排序算法全解析
java·算法·排序算法
z***3351 小时前
SpringBoot获取bean的几种方式
java·spring boot·后端