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

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

相关推荐
Flittly12 小时前
【AgentScope Java新手村系列】(16)从RAG到多路检索
java·spring boot·spring
小兔崽子去哪了12 小时前
Java 生成二维码解决方案
java·后端
人活一口气17 小时前
从JVM调优到MCP协议:Java全栈技术体系深度总结与企业级架构实践
java·spring boot
NE_STOP18 小时前
Vibe Coding -- 完整项目案例实操
java
荣码18 小时前
GraphRAG:普通RAG只能回答"点"的问题,我踩了4个坑才搞懂
java·python
SimonKing18 小时前
Google第三方授权登录
java·后端·程序员
明月光81819 小时前
从一行 @Builder 说起:重新拾起 Java 的 Lombok、注解与 Builder 模式
java
考虑考虑1 天前
Mybatis实现批量插入
java·后端·mybatis
咖啡八杯1 天前
GoF设计模式——中介者模式
java·后端·spring·设计模式
青石路1 天前
记一次多JDK版本问题的排查,一坑套一坑,差点没爬上来
java