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 分钟前
C++ deque 全面解析与实战指南
java·开发语言·数据结构·c++·学习·知识
独自破碎E1 分钟前
什么是RabbitMQ中的死信队列?
java·rabbitmq·java-rabbitmq
码界奇点2 分钟前
基于Spring与Netty的分布式配置管理系统设计与实现
java·分布式·spring·毕业设计·源代码管理
计算机毕设指导63 分钟前
基于微信小程序的咖啡店点餐系统【源码文末联系】
java·spring boot·微信小程序·小程序·tomcat·maven·intellij-idea
Geoking.3 分钟前
【设计模式】外观模式(Facade)详解
java·设计模式·外观模式
ID_180079054738 分钟前
除了Python,还有哪些语言可以解析淘宝商品详情API返回的JSON数据?
开发语言·python·json
闻道且行之8 分钟前
NLP 部署实操:Langchain-Chatchat 配置文件深度修改与精细化调试
java·自然语言处理·langchain
h7ml10 分钟前
企业微信回调模式解析:从XML到POJO的自定义JAXB编解码器设计
xml·java·企业微信
草莓熊Lotso10 分钟前
Qt 信号与槽深度解析:从基础用法到高级实战(含 Lambda 表达式)
java·运维·开发语言·c++·人工智能·qt·数据挖掘
装不满的克莱因瓶1 小时前
【踩坑】IDEA提交Git .gitignore忽略文件不起作用
java·git·.gitignore·踩坑