【Java刷题进阶】基础入门篇③

举报
陈橘又青 发表于 2022/09/28 15:35:15 2022/09/28
【摘要】 第一题:求最小公倍数 🍂题目描述编写一个方法,该方法的返回值是两个不大于100的正整数的最小公倍数输入描述:两个int类型变量作为方法的参数输出描述:int类型的变量,值为两个数的最小公倍数 🍃示例输入:3 7输出:21 🍃题解具体方法如下:import java.util.*; public class Main { public static void main(Strin...

第一题:求最小公倍数

🍂题目描述

编写一个方法,该方法的返回值是两个不大于100的正整数的最小公倍数

输入描述:
两个int类型变量作为方法的参数
输出描述:
int类型的变量,值为两个数的最小公倍数

🍃示例

输入:3 7
输出:21

🍃题解

具体方法如下:

import java.util.*;
 
public class Main {
    public static void main(String[] args) {
        //标准输入
        Scanner console = new Scanner(System.in);
        int m = console.nextInt();
        int n = console.nextInt();
        //计算最小公倍数
        int result = getCM(m, n);
        //输出结果
        System.out.println(result);
    }
 
    //计算最小公倍数
    public static int getCM(int m, int n){
        //计算m、n中较大者
        int max=Math.max(m,n);
        //从max到m*n之间找最小公倍数
        for(int i=max;i<=m*n;i++){
            //如果既能被m整除又能被n整除,说明是最小公倍数,直接返回
            if(i%m==0&&i%n==0){
                return i;
            }
        }
        return -1;
    }
     
}

第二题:小球走过路程计算

🍂题目描述

一球从h米高度自由落下,每次落地后反弹回原高度的一半再落下,求它在第n次落地时共经过了多少米?第n次反弹多高?

输入描述:
输入小球的初始高度和落地的次数(先输入小球初始高度再输入反弹次数)
输出描述:
输出小球反弹的高度和经过的距离(先输出反弹的高度再输出经过的距离,中间用空格隔开)

🍃示例

输入:100 3
输出:12.500 250.000

🍃题解

最后一次下落时不计算弹起来的距离,所以只计算n-1次弹起,具体方法如下:

import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
         // 下落的高度和落地的次数
        float h=scanner.nextFloat();
        int n =scanner.nextInt();
        float dis = 0;
        for(int i = 0; i < n; i++){
            dis += h;  //每次加上落下来的距离
            h /= 2; //弹起距离缩短一半
            if(i == n - 1){
                System.out.println(String.format("%.3f", h)+" "+String.format("%.3f", dis));
            }
            dis += h; //弹上去走的距离
        }
    }
}

第三题:求平均数

🍂题目描述

键盘输入任意多个10000以内正整数(负数代表结束),求出它们的平均数

输入描述:
任意多个正整数
输出描述:
它们的平均数(平均数为double类型,保留两位小数)

🍃示例

输入:12 23 32 43 -1
输出:27.50

🍃题解

使用为了循环实现,具体方法如下:

import java.util.Scanner;
 
public class Main {
 
    public static void main(String[] args) {
        //标准输入
        Scanner scan = new Scanner(System.in);
        //计数
        int cnt=0;
        //记录平均数
        double avg=0;
        //记录累加和
        double sum=0;
        while(scan.hasNext()){
            int num=scan.nextInt();
            //如果小于0,直接终止循环
            if(num<0){
                break;
            }
            //累加和加上对应num
            sum+=num;
            //计数加一
            cnt++;
        }
        //计算平均数
        avg=sum/cnt;
        System.out.println(String.format("%.2f",avg));
 
    }
}

第四题:判断质数

🍂题目描述

请补全预设代码中判断质数的方法。

输入描述:
一个大于1的整数
输出描述:
true/false

🍃示例

输入:2
输出:true

🍃题解

重点在于掌握判断质数的方法,具体实现如下:

import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Main main = new Main();
        Scanner scan = new Scanner(System.in);
        int number = scan.nextInt();
        System.out.println(main.isPrimeNumber(number));
    }
 
    public Boolean isPrimeNumber(int number) {
 
        //write your code here......
        //满足以下条件不是质数(1+2)或(3)
        //1 非2的偶数
        //2 奇数(除1和本身)有其他奇数因子
        //3 2到开根号之间有因子
        if(number!=2 && number%2==0)return false;
        for(int i=3;i<number;i+=2){
            if(number%i==0)return false;
        }
        return true;
    }
}

第五题:计算整数位数

🍂题目描述

输入一个整数,计算它的位数。如果输入的整数不大于0则输出这个数

输入描述:
一个整数
输出描述:
整数的位数

🍃示例

输入:9999
输出:4

输入:-1
输出:-1

🍃题解

具体实现方法如下:

import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int num = scan.nextInt();
        scan.close();
 
        //write code here......
        if(num<=0){
            System.out.print(num);
        }else{
            for(int i =1;i<11;i++){//int最多10位
                if((num/=10)==0){
                    System.out.print(i);
                    break;
                }
            }
        }
    }
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。