java基础题(2)

3.循环

 3.1 数列求和

描述

有数列为:9,99,999,...,9999999999。要求使用程序计算此数列的和,并在控制台输出结果。(请尝试使用循环的方式生成这个数列并同时在循环中求和)

输入描述:

无

输出描述:

将该数列的和直接输出
public class Main {
    public static void main(String[] args) {
        //write your code here........
        long sum = 0;
        long base = 9; //以9为基数
        for(int i = 0; i < 10; i++){ //一共十个数字
            sum += base; //累加数列
            base = base * 10 + 9; //当前数列乘10加9就是下一个数列
        }
        System.out.println(sum);
    }
}

 

 3.2 统计输入正数个数

描述

控制台输入整数,请设计一个死循环,当用户输入非正数时停止输入。请给出用户输入的正整数个数(默认输入个数不超过2147483647)

输入描述:

若干整数,整数之间用空格隔开

输出描述:

控制台输入的正整数个数

示例1

输入:1 2 3 4 5 6 7 0
输出:7
import java.util.*;

public class Main {
    public static void main(String[] args) {
        int count = 0;
        Scanner scanner = new Scanner(System.in);
        //write your code here......
         while(true){
        if(scanner.nextInt()<=0)break;
        //判断数据类型
        if(!scanner.hasNextInt())break;
        count++;
    }
    System.out.print(count);
    }
}

 

 3.3 求最小公倍数

描述

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

输入描述:

两个int类型变量作为方法的参数

输出描述:

int类型的变量,值为两个数的最小公倍数

示例1

输入: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){
        //write your code here......
        //计算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;
    }
    }

 

 3.4 小球走过路程计算

描述

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

输入描述:

输入小球的初始高度和落地的次数(先输入小球初始高度再输入反弹次数)

输出描述:

输出小球反弹的高度和经过的距离(先输出反弹的高度再输出经过的距离,中间用空格隔开,且结果保留三位小数)

示例1

输入:100 3
输出:12.500 250.000
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; //弹上去走的距离
        }
    }
}

 

 3.5 求平均数

描述

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

输入描述:

任意多个正整数

输出描述:

它们的平均数(平均数为double类型,保留两位小数)

示例1

输入: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));

    }
}

 

 3.6 判断质数

描述

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

输入描述:

一个大于1的整数

输出描述:

true/false

示例1

输入:2
输出:true

示例2

输入:9
输出:false
import java.util.Scanner;

public class stu {
    public static void main(String[] args) {
       stu main = new stu();
        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......
        for(int i=2; i<number; i++) {
            if(number%i == 0) {
                return false;
            }
        }
        return true;
    }
}

 

 3.7计算整数位数

描述

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

输入描述:

一个整数

输出描述:

整数的位数

示例1:

输入:9999; 输出:4;

示例2

输入:0;输出:0;

示例3:

输入:-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 
         System.out.print((num+"").length());

  法②:
    //如果小于等于0,直接输出
        if(num<=0){
            System.out.println(num);
        }
        //记录整数位数
        int cnt=0;
        while(num>0){
            //每消耗一个位置,位数加一
            cnt++;
            num/=10;
        }
        System.out.println(cnt);
 
    }

    }
}

 

 4.数组
 
4.1数组遍历

描述

将用户输入的六个数字填入数组并找出数组中最大值和最小值

输入描述:

随机输入的6个整数

输出描述:

输出数组中的最大值,最小值(最大值最小值之间用空格隔开。若有多个最大值或最小值,输出一次即可)
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        int[] ary = new int[6];
        int max;
        int min;
        Scanner scanner = new Scanner(System.in);
         for (int i = 0; i <ary.length ; i++) {
            ary[i]=scanner.nextInt();
        }

        //write your code here......
         
    max=ary[1];//把数组的第一个数作为初始化的数字
    min=ary[1];
    for(int i=0;i<ary.length;i++){
        max=Math.max(ary[i],max);
        min=Math.min(ary[i],min);
    }

    System.out.println(max+" "+min);
}
 
}

 

4.2数组倒转

描述

输入6个整数,先将其输出然后再将数组倒转,再次输出数组

输入描述:

用户随机输入的6个int类型变量

输出描述:

先输出用户输入顺序的数组(这一步预设代码已给出)
再输出反转后的数组(输出格式为Arrays.toString(arr),参考预设代码中的输出格式)
import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        int[] arr = new int[6];
        Scanner scanner = new Scanner(System.in);
        for (int i = 0; i < arr.length; i++) {
            arr[i] = scanner.nextInt();
        }
        System.out.println(Arrays.toString(arr));

        //write your code here......
        int left = 0, right = arr.length - 1; //双指针从首尾开始
        while(left < right){
            int temp = arr[left]; //交换指针元素
            arr[left] = arr[right];
            arr[right] = temp;
            left++;  //指针向中间靠
            right--;
        }

        System.out.println(Arrays.toString(arr));
    }
}

 

 
4.3二维数组求和

描述

给定一个二维数组,请你编写一个求和函数,计算出这个数组元素的和

输入描述:

无

输出描述:

输出二维数组元素的和

 

public class Main {
    public static void main(String[] args)
    {
        int[][]  arr = {{11,33,55},{22,44,66,88},{131,214,315,146},{928,827,726,625},{424,525}};
        int sum=add(arr);
        System.out.println(sum);
    }
    public static int add(int[][] arr)
    {
        int sum=0;
        for(int i = 0; i < arr.length; i++){ //遍历行数小于数组维度大小
            for(int j = 0; j < arr[i].length; j++) //每行列数等于该行的数组大小
                sum += arr[i][j]; //累加
        }
        return sum;
    }
}

 

posted @ 2022-03-15 00:39  zfj0318  阅读(292)  评论(0)    收藏  举报