Java基础知识小练习

99乘法表

1,案例:双重for循环打印九九乘法表

package com.baidu.demo;
public class Test {
   public static void main(String[] args) {
       for (int i = 1; i <=9 ; i++) {
           for(int j=1;j<=i;j++){
               System.out.print(i+"*"+j+"="+i*j+" ");//不换行
           }
           System.out.println();//换行
       }
    }
}

2,结果展示
在这里插入图片描述

数字次数

1,需求:定义一个方法,求出给定的数字在给定int类型数组中出现的次数,如果一次读没有就返回0;例如:int [] arr={3 ,5,8,5,2,5},5出现2次。
2,分析:先定义一个count来记录次数。for循环遍历,if判断查找给定数字,相同count就加一,最后返回count。

package com.baidu.demo;
import java.util.Scanner;
public class Test {
   public static void main(String[] args) {
        int [] arr={1,2,5,5,8,8,4,4,2,1,1,1,2,2,9};
       System.out.print("请给定一个数字:");
       System.out.println("数字出现的次数:"+getIndex(arr));
    }
    public static int getIndex(int[] arr){
        Scanner sc=new Scanner(System.in);
        int a=sc.nextInt();
        int count=0;
        for(int i=0;i<arr.length;i++)
        {
            if(arr[i]==a) {
                ++count;
            }
        }
        return count;
    }
}

3,结果展示
在这里插入图片描述

回文数字

1,需求:打印5位数中的所有回文数。
2,举例:12321是回文数,个位与万位相同,十位与千位相同。
3,分析:首先我们应该想到水仙花数个,十,百位数字的求法。思想和它的一样,我们应分别求这五位数字,定义五个变量a,b,c,d,e来存放它。然后加个if判断,百位数字比十位大1,十位比个位大1。

package com.baidu.demo;
public class Method {
    public static void main(String[] args) {
        int a=0,b=0,c=0,d=0,e=0;
        for(int i=10000;i<99999;i++)
        {
            a=i/10000;
            b=i/1000%10;
            c=i/100%10;
            d=i/10%10;
            e=i%10;
            if(a==e&&b==d&&a+1==b&&b+1==c)
            {
                System.out.println(i);
            }
        }
    }
}

4,结果展示
在这里插入图片描述

数组求和

1, 需求:定义一个int类型的一维数组,内容{77,72,19,16,18,57,12,71,24};求出该数组中满足要求的元素和。
2,要求:求和的元素的个位和十位不能包含7,并且只能为偶数。
3,分析:根据上一题,我们先求出个位和十位数字,然后在加个if判断,就可以做出来了。

package com.baidu.demo;
public class Method {
    public static void main(String[] args) {
        int sum=0;
        int [] arr={77,72,19,16,18,57,12,71,24};
        for(int i=0;i<arr.length;i++){
            if(arr[i]/10!=7&&arr[i]%10!=7&&arr[i]%2==0){
                sum+=arr[i];
                System.out.println(arr[i]);
            }
        }
        System.out.println("元素之和为:"+sum);
    }
}

4,结果展示
在这里插入图片描述

评委打分

1,需求:在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。选手的最后得分为:去掉一个最高分和一个最低分后 的4个评委平均值。请写代码实现。(小数不考虑)
2,分析:首先我们让6个评委输入各自的分数,然后遍历这些分数,找出最大值和最小值,求出分数总和之后求平均值。

package com.baidu.demo;
import java.util.Scanner;
public class Test {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int[] arr=new int[6];
        for (int i = 0; i <arr.length ; i++) {
            System.out.println("请第"+(i+1)+"评委输入分数");
            int score=sc.nextInt();
            arr[i]=score;
        }
        int max=getMax(arr);
        int min=getMin(arr);
        int sum=getSum(arr);
        int avg=(sum-max-min)/(arr.length-2);
        System.out.println("该选手的分数为:"+avg);
    }
    public static int getSum(int[] arr){
        int sum=0;
        for (int i = 0; i <arr.length ; i++) {
            sum+=arr[i];
        }
        return sum;
    }
    public static int getMax(int[] arr){
        int max=arr[0];
        for (int i = 0; i <arr.length ; i++) {
            if(max<arr[i])
                max=arr[i];
        }
        return max;
    }
    public static int getMin(int[] arr){
        int min=arr[0];
        for (int i = 0; i <arr.length ; i++) {
            if(min>arr[i])
                min=arr[i];
        }
        return min;
    }
}

3,结果展示
在这里插入图片描述

数据加密

1,需求:键盘录入数据,要求数据是四位的整数,现需要对数据进行加密,加密规则如下:
每位数字都加上5,然后除以10的余数代替该数字,
再将第一位和第四位交换,第二位和第三位交换,
请把加密后的数据输出到控制台
2,分析:求法和第一题一样,先求出四位数的四个数字,再将每位数字都加上5,然后除以10的余数代替该数字,最后定义中间变量来交换数字位置。

package com.baidu.demo;
import java.util.Scanner;
public class Test {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入要加密的数据:");
        int number=sc.nextInt();
        //每位数字都加上5。然后除以10的余数代替该数字。
        int ge=number%10;
        int shi=number/10%10;
        int bai=number/100%10;
        int qian=number/1000%10;
        ge=(ge+=5)%10;
        shi=(shi+=5)%10;
        bai=(bai+=5)%10;
        qian=(qian+=5)%10;
        // 再将第一位和第四位交换。第二位和第三位交换。
        int temp=qian;
        qian=ge;
        ge=temp;
        int temp2=bai;
        bai=shi;
        shi=temp2;
        System.out.println("加密后的数字:");
        System.out.print(+ge);
        System.out.print(+shi);
        System.out.print(+bai);
        System.out.print(+qian);
    }
}

3,结果展示
在这里插入图片描述

ATM取款

1,需求:假设一个简单的在ATM的取款过程如下:首先提示用户输入密码(password),最多只能输入3次,超过3次则提示用户"密码错误,请取卡"交易结束。如果用户密码正确,再提示用户输入金额(amount),ATM只能输出100元的纸币,一次取钱数要求最低0元,最高1000元。
如果用户输入的金额符合上述要求,则打印输出用户取的钱数,最后提示用户"交易完成,请取卡",否则提示用户重新输入金额。假设用户密是"111111"。
2,分析:创建键盘录入对象,判断密码是否正确,记录密码次数,判断次数大于等于3次,输出提示。如果密码正确,进入循环,再次判断金额是否合法,合法,提示取出现金多少,交易完成。

package com.baidu.demo;
import java.util.Scanner;
public class Test {
   public static void main(String[] args) {
       Scanner  sc=new Scanner(System.in);
       System.out.println("请输入密码:");
       for(int i=0;;i++)
       {
           int password=sc.nextInt();
           if(password!=111111){
               if(i>=2)
               {
                   System.out.print("密码错误三次,请取卡");
                   break;
               }
               System.out.print("密码错误,请重新输入:");
               continue;
           }
           if(password==111111)
           {
               System.out.println("请输入取款金额:");
               for(int j=0;;j++){
                   int amount=sc.nextInt();
                   if(amount>=0&&amount<=1000&&amount%100==0){
                       System.out.println("请取走现金:"+amount+"元");
                       System.out.println("交易完成,请取卡");
                       break;
                   }
                   else{
                       System.out.println("您输入的金额有误,请重新输入:");
                   }
               }
           }
           break;
       }
   }
}

3,结果展示
在这里插入图片描述
在这里插入图片描述

不死兔子

1,需求:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第二十个月的兔子对数为多少?
2,分析:
十二个月我们就定义数组来实现int[] arr = new int[20];
月数: 1 2 3 4 5 6
对数: 1 1 2 3 5 8 …
从第三个月开始 兔子的对数 等于 前两个月对数之和
我们可以去定义一个数组来存储兔子的对数,arr[0] = 1,arr[1] = 1;
找规律
arr[2] = arr[1] + arr[0];
arr[3] = arr[2] + arr[1];
arr[4] = arr[3] + arr[2];
arr[5] = arr[4] + arr[3];
arr[i] = arr[i-1] + arr[i-2];

package com.baidu.demo;
public class Test {
    public static void main(String[] args) {
        //初始化月份  数组的索引表示月份  索引对应的元素表示兔子对数
        int[] arr = new int[20];
        arr[0] = 1;
        arr[1] = 1;
        for (int i = 2; i < arr.length; i++) {
            arr[i] = arr[i - 1] + arr[i - 2];
        }
        System.out.println("第二十个月兔子的总对数为:\n"+arr[19]);
    }
}

3,结果展示
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_45893999/article/details/106680464