关于java初学者的30个的综合练习 有的有注释大部分通俗易懂

package com.Xinzhi;

import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.*;

public class Lian  {
    //1.古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您要查询的月份");
        int n =sc.nextInt();
        System.out.println("第" + n + "月份有" + rabbit(n) + "对兔子");
    }
    static int rabbit(int n){
        if (n==1 || n==2){
            return 1;
        }else {
            return rabbit((n-1)) + rabbit(n-2);
        }
    }
}
class Lian2{
    public static void main(String[] args) {
        for (int i = 101; i<=200; i++){
            int m =0;
            for (int j=2; j < i; i++){
                if (i%j == 0){
                    m++;
                }
                if (m==0){
                    System.out.println(i);
                }
            }
        }
    }
}
class Lian3{
    public static void main(String[] args) {
        for (int i =100; i <1000; i++){
            int a = i/100;
            int b = i/10%10;
            int c = i%10;
            if (i == Math.pow(a ,3) +Math.pow(b,3)+Math.pow(c,3)){
                System.out.println(i);
            }
        }
    }
}



class Lian4{
    /*程序分析:
    找一个数的因数也可以用for循环,从2遍历到他自身(保证找全)
    如何找因数,是用该数90除以遍历的数2~90来算的,
    如何找质因数。
    如果90除以2得45
45再除以2,除不尽,除3(2+1)得15
    再将15除以2,除不尽,除3(2+1)得5
5再继续除2,除3,除4…
    这就是找质因数的方法,上面那个5其实就不用除了,只是举例。
    可以看出上是一个循环,90除2得45后,是用45 继续往下走的。*/
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个正整数");
        int n = sc.nextInt();
        System.out.println(n+"=");
        for (int i = 2; i<n; i++){
            while (n%i == 0 && n!=i){
                n=n/i;
                System.out.println(i+"=");
            }
            if (n==1){
                System.out.println(i);
                break;
            }
        }
    }
}


class Lian5{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入成绩");
        int  n =sc.nextInt();
        if (n>=0 && n<=100){
            if (n>=90){
                System.out.println("A");
            } else if (n>=60) {
                System.out.println("B");
            }else {
                System.out.println("C");
            }
        }else {
            System.out.println("输入有误");
        }
    }
}

class Lian6{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入第一个整数");
        int m =sc.nextInt();
        System.out.println("请输入第二个整数");
        int n = sc.nextInt();
        System.out.println(m+"和" + n + "的最大公约数为:"+ Max(m,n));
        System.out.println(m+"和"  +n + "最小公倍数为:"  +Min(m , n));
    }
    static int Max(int m , int n){
        while (m%n != 0){
            int temp = m%n;
            m=n;
            n = temp;
            if (m%n == 0){
                return n;
            }
        }
        return 0;
    }
    static int Min(int m , int n){
        return m%n/Max(m , n);
    }
}
class Lian8{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入字符串");
        String str = sc.nextLine();
        //将获取的字符串赋值给arr
        char[] arr = str.toCharArray();
        int x = 0 , y = 0 , z = 0 , m = 0;
        for (int i = 0; i<arr.length; i++){
            int n = arr[i];
            if ((n>=65 && n<90) || (n>=97 && n<=122)){
                x++;
            } else if (n==32) {
                m++;

            } else if (n>=48 && n<=57) {
                y++;
            }else {
                z++;
            }
        }
        System.out.println("输入的字母个数"+x);
        System.out.println("输入的数字个数" + y);
        System.out.println("输入的空格个数" + m);
        System.out.println("输入的其他字符个数" + z);
    }
}
class Lian9{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入n的值");
        int  n = sc.nextInt();
        if (n>0 && n<10){
            int s = 7*n+4*n+100*n+10000*n+51515*n;
            System.out.println("s的值为"+s);
        }else {
            System.out.println("数入错误");
        }
    }
}

class Lian10{
    public static void main(String[] args) {
        for (int i =1; i<=1000; i++){
            int sum = 0;
            for (int j=1; j<i;j++){
                if (i%j==0){
                    sum+=j;
                }
            }
            if (sum==i){
                System.out.println(i);
            }
        }
    }
}

class Lian11{
    public static void main(String[] args) {
        //初始化参数
        double s =0 ,  t = 0;
        int sum = 0;
        //遍历1到10
        for (int i=1; i<=10;i++){
            //s单次下落经过多少米 s=100/2的(i-1)的次方
            s = 100/Math.pow(2,i-1);
            System.out.println("第"+i+"次下落经过"+s+"米");
            //t反弹多少米 t=100/2^i(2的i次方)
            t=100/Math.pow(2,i);
            System.out.println("第"+i+"反弹"+t+"米");
            sum+=s;
        }
        System.out.println("第十次落地时共经过"+sum+"米");
    }
}

class Lian12{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int [] arr = new int[4];
        for (int i = 0; i<arr.length;i++){
            arr[i] = sc.nextInt();
        }
        System.out.println("当前数组为:");
        printArray(arr);
        bubbleSort(arr);
        System.out.println("排序后的数组为:");
        printArray(arr);
    }
    public static void printArray(int [] arr){//形参
        for (int i=0;i<arr.length;i++){
            System.out.println(arr[i]+"");
        }
        System.out.println();
    }
    public static void bubbleSort(int [] arr){
        //第一次排序将最后一个数定为最小,第二次将倒数第二个数为第二小.....
        for (int i=0; i< arr.length-1;i++){
            //"-1"同上,最后一个数无需交换
            //“-i”第i+1(i初始为0,所以+1)轮排序后就少了一个数,第2轮就少两个
            for (int j =0;j< arr.length-i-1;i++){
                if (arr[j]<arr[j+1]){
                    int x = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = x;

                }
            }
            System.out.println("第"+(i+1)+"轮排序后");
            printArray(arr);
        }
    }
}
class Lian13 {
    public static void main(String[] args) {
        // 一、编写程序解决“百钱买百鸡”问题。公鸡五钱一只,母鸡三钱一只,小鸡一钱三只,
        //现有百钱欲买百鸡,共有多少种买法?
        way1();
        wat2();
    }

    static void way1() {
        for (int cock = 0; cock <= 20; cock++) {
            for (int hen = 0; hen <= 33; hen++) {
                if (cock * 5 + hen * 3 + (100 - cock - hen) / 3 == 100 && (100 - cock - hen) % 3 == 0) {
                    System.out.println("公鸡" + cock + "只,公鸡" + hen + "只,小鸡");
                }
            }
        }

    }

    static void wat2() {
        for (int y = 0; y < 20; y++) {
            for (int x = 0; x < 33; x++) {
                for (int z = 0; z < 300; z++) {
                    if (y * 5 + x * 3 + z / 3 == 100 && y + x + z == 100 && z % 3 == 0) {
                        System.out.println("公鸡" + y + "只,母鸡" + x + "只,小鸡" + z + "只");
                    }
                }
            }
        }
    }
}



class Lian14{
    //二、猴子吃桃问题。猴子第一天摘下若干个桃子,当时就吃了一半,还不过瘾,就又吃了一个。
    // 第二天又将剩下的桃子吃掉一半,
    // 又多吃了一个。以后每天都吃前一天剩下的一半零一个。
    // 到第 10 天在想吃的时候就剩一个桃子了,求第一天共摘下来多少个桃子?
    public static void main(String[] args) {
        int total=1;
        int day=10;
        for (int i=10;i>0;i--){
            System.out.println("第"+day+"天有"+total+"个桃子");
            total=(total+1)*2;
            day--;
        }
    }

}
class Lian15{
    //古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,
    // 小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
    public static void main(String[] args) {
        /*
         * 古典问题:有一对兔子,
         * 从出生后第3 个月起每个月都生一对兔子,
         * 小兔 子长到第三个月后每个月又生一对兔子,
         * 假如兔子都不死,
         * 问每个月的兔子总数 为多少? */
        way1();
        way2();
    }
    /*    方法理解:第一个月1对
            第二个月1对
            第三个月 2 对(1+1)     //第三个月,第一对老兔子开始生了一对兔子了
            第四个月 3 对(2+1)     //第四个月,没有新兔子生育,还是老兔子生一对,所以+1
            第五个月 5 对(3+2)     //第五个月,第三个月的兔子开始生育了,再加上老兔子也再生,所以是+2
            第六个月 8 对(5+3)     //第六个月,第四个月的兔子开始生育了,再加上之前的两对老兔子生,所以是+3
    相信到这里,大家就可以看出来了,实际上不用管什么时候兔子开始生啊,每个月有几对兔子生,
    这就是一道找规律的数学题而已,不要把自己搞懵了。
    这个月的兔子数 = 上个月的兔子数 + 上上个月的兔子数*/
    static void way1(){
        int i=1,j=0;
        for (int month=1;month<=12;month++){
            int x = 1;
            System.out.println("第"+month+"个月有"+2*i+"只兔子");
            i=i+j;
            j=x;
        }
        System.out.println();
    }
    static void way2(){
        Scanner sc =new Scanner(System.in);
        System.out.println("请输入月份");
        int n= sc.nextInt();
        System.out.println("第"+n+"月兔子数为:"+2*fun(n));
    }
    static int fun(int n){
        if (n==1 || n==2){
            return 1;
        }else {
            return fun(n-1)+fun(n-2);
        }
    }
}

class Lian16{
    //用if while do.while for 计算1~200直接3的倍数的和
    public static void main(String[] args) {
        int sum=0;
        ifo(sum);
        dow(sum);
        Cir(sum);
        whi(sum);

    }
    static void ifo(int sum){
        int i = 1;
        if (i <= 200 ){
            if (i % 3 == 0){
                sum+=i;
            }
            i++;
        }
        System.out.println("用if循环计算1~200所有3的倍数和为"+sum);
    }
    static void dow(int sum){
        int i = 1;
        do {
            if (i % 3 ==0){
                sum+=i;
            }
            i++;
        }while (i<=200);
            System.out.println("用do...while循环计算1~200之间所有3的备注之和是"+sum);
    }
    static void Cir(int sum){
        for (int i = 1;i<=200;i++){
            if (i%3 == 0){
                sum+=i;

            }
        }
        System.out.println("用for循环计算1~200之间所有3的倍数之和为:"+sum);
    }
    static void whi(int sum){
        int i = 1;
        while (i <=200){
            if (i%3 ==0){
                sum+=i;
            }
            i++;
        }
        System.out.println("用while循环计算1~200之间所有3的倍数之和为:"+sum);
    }

}


class Lian17 {
    public static void main(String[] args) {
        //输出200~500之间的素数
        prem();
        boo();
    }

    static void prem() {
        for (int i = 200; i <= 500; i++) {
            int m = 0;
            for (int j = 2; j < i; j++) {
                if (i % j == 0) ;
                m++;
            }
            if (m == 0) ;
            System.out.println(i);
        }
    }

    static void boo() {
        for (int i = 200; i <= 500; i++) {
            boolean boo = true;
            for (int j = 2; j < i; j++) {
                if (i % j == 0) {
                    boo = false;
                    break;
                }
            }
            if (boo) {
                System.out.println(i);
            }
        }

    }
}

class Lian18{
    public static void main(String[] args) {
        gene();
    }
    static void gene(){
        for (int i = 1; i<=10000;i++){
            int sum = 0;
            for (int j = 1; j<i;j++){
                if (i%j == 0){
                    sum+=j;
                }
            }
            if (i==sum) {
                System.out.println(i);
            }
        }
    }
}
class Lian19{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n =9*sc.nextInt();
        ju(n);
    }
    static void ju(int n ){
        int a = n/1000;
        int b = n/100%10;
        int c = n/10%10;
        int d = n%10;
        int sum = a+b+c+d;
        if (sum%9==0){
            System.out.println(n+"的个位数之和能被9整除");

        }else {
            System.out.println(n+"的各个位数之和不能被9整除");
        }
    }
}

class Lian20{
    public static void main(String[] args) {
        for (int i = 100; i<1000000;i++){
            prm(i);
        }
    }
    static void prm(int i){
        int a = i/100;
        int b = i/10%10;
        int c = i%10;
        double sum = Math.pow(a,3)+Math.pow(b,3)+Math.pow(c,3);//计算次方
        if (sum==i){
            System.out.println(i);
        }

    }
}

class Lian21{
    public static void main(String[] args) {
        System.out.println("请输入一个整数");
        Scanner sc =new Scanner(System.in);
        int n = sc.nextInt();
        int sum = n;
        System.out.println(n+"的质因数又:");
        for (int i=2;i<n;i++){
            while (n%i==0){
                n/=i;
                System.out.println(i+"");
            }
        }
        System.out.println(""+sum);
    }
}

class Lian22{
    public static void main(String[] args) {
        Random rd = new Random();
        int n = rd.nextInt(300);
        System.out.println("原本的数为"+n);
        while (n != 1){
            if (n%2 == 0){
                n=n/2;
            }else {
                n = 3*n+1;
            }
            System.out.println("改变之后为"+n);
        }
        System.out.println(n);
    }
}

class Lian23{
    public static void main(String[] args) {
        System.out.println(23);
    }
}
class Lian24{
    public static void main(String[] args) {
        Random random = new Random();//随机数
        int [] arr = new int[10];//十个数的数组
        for (int i = 0; i<10;i++){//数组中放入随机数
            arr[i]  = random.nextInt(100)+1;//要求1-100的随机数所以要+1
        }
        List list = new ArrayList();//创建一个集合
        for (int i = 0; i<arr.length;i++){//循环数组,判断数组元素是否大于10
            if (arr[i] >= 1){//如果大于10,放入集合中
                list.add(arr[i]);
            }
        }
        System.out.println(Arrays.toString(arr));
         System.out.println(list);

    }
}

class Lian28{
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你的大难");
        String string = scanner.next();
        System.out.println("请输入密码");
        String in = scanner.next();
        System.out.println(string.equals(in) ?"成功" :"失败");
    }
}


enum Color
{
    RED, GREEN, BLUE;
}
 class Lian32  {
    public static void main(String[] args) {
        Color myVar = Color.RED;

        switch(myVar) {
            case RED:
                System.out.println("红色");
                break;
            case GREEN:
                System.out.println("绿色");
                break;
            case BLUE:
                System.out.println("蓝色");
                break;
        }
    }
}

 class Enumeration03 {
    public static void main(String[] args) {

        System.out.println(Season.SPRING);
        System.out.println(Season.SUMMER);
        System.out.println(Season.AUTUMN);
        System.out.println(Season.WINTER);

    }
}

//演示enum关键字来实现枚举类
enum Season {//类

    //如果使用 enum 来实现枚举类
    //1. 使用 enum 来替代 class
    //2.  public static final Season SPRING = new Season("春天", "温暖"); 等价于
    // SPRING("春天", "温暖") 解读:常量名(实参列表)
    //3. 如果有多个常量(对象), 使用 "," 间隔
    //4. 如果使用 enum 来实现枚举,要求将定义常量对象,写在最前面
    SPRING("春天", "温暖"),
    SUMMER("夏天", "炎热"),
    AUTUMN("秋天", "凉爽"),
    WINTER("冬天", "寒冷")
    ;


    private String name;
    private String desc;//描述

    private Season(String name, String desc) {
        this.name = name;
        this.desc = desc;
    }

    public String getName() {
        return name;
    }

    public String getDesc() {
        return desc;
    }

    @Override
    public String toString() {
        return "Season{" +
                "name='" + name + '\'' +
                ", desc='" + desc + '\'' +
                '}';
    }
}
class Lian31{
    public static void main(String[] args) {
        ArrayList<Integer> arrayList =new ArrayList<Integer>();
        arrayList.add(10);
        arrayList.add(20);
        arrayList.add(30);
        arrayList.addAll(arrayList);//添加集合中所有元素
        System.out.println(arrayList);
        arrayList.clone();//复制集合中的所有元素
        System.out.println(arrayList);
        System.out.println(arrayList.contains(8));//判断集合中有没有8
        System.out.println(arrayList.indexOf(10));



    }
}
 class Lian33
{
    // 泛型方法
    public static < E > void printArray( E[] inputArray )
    {
        // 输出数组元素
        for ( E element : inputArray ){
            System.out.printf( "%s ", element );
        }
        System.out.println();
    }

    public static void main( String args[] )
    {
        // 创建不同类型数组: Integer, Double 和 Character
        Integer[] intArray = { 1, 2, 3, 4, 5 };
        Double[] doubleArray = { 1.1, 2.2, 3.3, 4.4 };
        Character[] charArray = { 'H', 'E', 'L', 'L', 'O' };

        System.out.println( "整型数组元素为:" );
        printArray( intArray  ); // 传递一个整型数组

        System.out.println( "\n双精度型数组元素为:" );
        printArray( doubleArray ); // 传递一个双精度型数组

        System.out.println( "\n字符型数组元素为:" );
        printArray( charArray ); // 传递一个字符型数组
    }
}
enum Choose{
    SPRING(1, "温暖"),
    SUMMER(2, "炎热"),
    AUTUMN(3, "凉爽"),;


    private int xuhao;
    private String wan;
    Choose(int xuhao, String wan) {
        this.xuhao = xuhao;
        this.wan = wan;
    }


    public int getXuhao() {
        return xuhao;
    }

    public String getWan() {
        return wan;
    }
        public static   void main(String[] args) {
            System.out.println("输入序号");
            Scanner in =new Scanner(System.in);
            int i = in.nextInt();
            switch (i){
                case 1:
                    System.out.println(SPRING.xuhao + SPRING.wan);
            }


        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值