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

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

相关推荐
逍遥德3 分钟前
MQTT教程详解-05.SpringBoot集成mqtt client 性能分析
java·spring boot·spring·mt
云烟成雨TD8 分钟前
Spring AI 1.x 系列【54】Retry 机制分析
java·人工智能·spring
weixin_5231853210 分钟前
Collections.unmodifiableMap详解:真的不可修改吗?
java·linux·前端
点燃大海12 分钟前
SpringAI构建智能体
java·spring boot·spring·springai智能体
xier_ran13 分钟前
【infra之路】02_RadixAttention与KV_Cache管理
java·spring boot·spring
黑马师兄27 分钟前
RAG混合检索深度解析:让AI真正找到你要的内容
java·人工智能·ai·agent·rag·ai-native
码客日记31 分钟前
Spring Boot 配置文件敏感信息加密(Jasypt 企业级完整方案)
java·spring boot·git
宋拾壹1 小时前
同时添加多个类目
android·开发语言·javascript
凡人叶枫1 小时前
Effective C++ 条款04:确定对象被使用前已先被初始化
java·linux·开发语言·c++·嵌入式开发
极客先躯1 小时前
高级java每日一道面试题-2026年02月01日-实战篇[Docker]-Docker Volume 的生命周期管理是怎样的?
java·运维·docker·容器·持久化·架构图·容器卷