Java基础练习题

本文展示了多个Java编程基础练习,包括打印9*9乘法表、星型图案、空心菱形、登录验证、随机数猜谜游戏、数字反转、质数判断、数字位数计算、数组操作及排序等。通过这些实例,读者可以巩固Java基本语法和逻辑思维能力。
摘要由CSDN通过智能技术生成

Java基础练习题 day09

💞不定时更新

  1. 编写9*9乘法表
public class Practice01 {
   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();
       }
   }
}

运行结果
在这里插入图片描述

  1. 星号打印三角形
public class Practice02 {
    public static void main(String[] args) {
        for (int i = 1; i <=4 ; i++) {
            for (int j = 1; j < 5-i; j++) {
                System.out.print(" ");
            }
            for (int j = 1; j <=(i*2-1); j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }

}

运行结果
在这里插入图片描述

  1. 星号打印实心菱形
public class Practice03 {
    public static void main(String[] args) {
        for (int i = -4; i <=4 ; i++) {
            for (int j = 1; j <=Math.abs(i); j++) {
                System.out.print(" ");
            }
            for (int j = 1; j <=8-(Math.abs(i)*2-1) ; j++) {
                System.out.print("*");
            }

            System.out.println();
        }
    }
}

结果显示
在这里插入图片描述

  1. 星号打印空心菱形
public class Practice04 {
    public static void main(String[] args) {
        for (int i = -4; i <=4 ; i++) {
            for (int j = 1; j <=Math.abs(i); j++) {
                System.out.print(" ");
            }
            for (int j = 1; j <=8-(Math.abs(i)*2-1) ; j++) {
                if(j==1||j==8-(Math.abs(i)*2-1)){
                    System.out.print("*");
                }else{
                    System.out.print(" ");
                }
            }

            System.out.println();
        }
    }
}

结果显示
在这里插入图片描述

  1. 已知账号admin,密码123456,使用键盘录入账号密码完成登录验证流程,允许输错三次,三次后提示账号锁定
import java.util.Scanner;

public class Practice05 {
   public static void main(String[] args) {
       String username="admin";
       String password="123456";
       int num=0;
       Scanner scan=new Scanner(System.in);
       String name=null;
       String pass=null;
       for(;;){
           System.out.print("请输入账户:");
           name=scan.next();
           System.out.print("请输入密码:");
           pass=scan.next();
         if(username.equals(name)&&password.equals(pass)){
             System.out.println("登录成功!");
             break;
         }else{
             System.out.println("账户或密码错误,请重新输入!");
             num++;
             if(num>=3){
                 System.out.println("抱歉,您已经错误三次,账户封锁一天!");
                 break;
             }
         }
       }
   }
}

结果显示

在这里插入图片描述

  1. 随机生成一个1~100整数,然后输入一个整数和生成的数字进行比对,猜大小并给予提示,猜对为止。
public class Practice06 {
    public static void main(String[] args) {
        Random R=new Random();
       int num= R.nextInt(100)+1;
        Scanner sc=new Scanner(System.in);
        int guess;
        int n=0;
        for(;;){
            System.out.print("请输入您猜的整数:");
            guess=sc.nextInt();
            n++;
            if(guess>num){
                System.out.println("亲,猜大了哟~,再试试");
            }else if(guess<num){
                System.out.println("亲,猜小了哟~,再试试");
            }else{
                System.out.println("恭喜你,猜对了!!正确数字为:"+num+",使用了"+n+"次就猜对了");
                break;
            }

        }
    }
}

显示结果
在这里插入图片描述

  1. 由键盘输入一个4位整数,求将该数反转以后的数,如原数为1234,反转后的数位4321
public class Practice07 {
    public static void main(String[] args) {

        Scanner scan=new Scanner(System.in);
        System.out.println("请输入一个整数:");
        int num=scan.nextInt();
        String s="";
        while(num!=0){
            int x=num%10;
            num=num/10;
            s=s+x;
        }
        System.out.println(s);
    }
}

结果显示

在这里插入图片描述

8、编写要求:输入任意一个正整数,求出比这个正整数大的质数中最小的那个质数

package Demo;
import java.util.Scanner;
/*
* 输入一个数,判断距离此数最小的质数
* */
public class PrimeNum {
    public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);
        System.out.println("请输入一个数:");
        int x=scan.nextInt();
        x++;
            for (int i = 2; i <x; i++) {
                if (x % i == 0 ) {
                    x++;
                    i=2;
                    continue;
                }
            }
        System.out.println(x);
    }
}

在这里插入图片描述
9、编写要求:任意输入一个数,求其输入的正整数是多少位

public class Practice09 {
    public static void main(String[] args) {
    	System.out.println("请输入:");
        int num=new Scanner(System.in).nextInt();
        int i;
        for( i=1;(num=num/10)!=0;i++){

        }
        System.out.println(i);
    }
}

在这里插入图片描述
10、编写:根据输入的数字,创建对应长度的数组,并随即赋值,提取Max和Min,再进行排序。

public class Practice06 {
    public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);
        System.out.print("请输入要定义的数组长度:");
        int[] numx=Shuzu(scan.nextInt(),new Random());
        //冒泡法
        Oderby(numx);

    }

//冒泡排序
    private static void Oderby(int[] numx) {
        for (int i = 0; i < numx.length; i++) {
            for (int j = i; j <numx.length ; j++) {
                if(numx[i]<numx[j]){
                    numx[i]=numx[i]+numx[j];
                    numx[j]=numx[i]-numx[j];
                    numx[i]=numx[i]-numx[j];
                }
            }
        }
        System.out.print("排序后的数组:");
        //输出数组
        for (int i = 0; i <numx.length ; i++) {
            System.out.print(numx[i]+"\t");
        }
    }
//生成数组并进行提取最大值和最小值
    public static int[] Shuzu(int x,Random r){
        int[] num=new int[x];
        System.out.print("原数组:");
        for (int i = 0; i < num.length; i++) {
            num[i]=r.nextInt(100)+1;
            System.out.print(num[i]+"\t");
        }
        System.out.println();
        int max=num[1],min=num[1];
        for (int i = 0; i <num.length ; i++) {
            if(max<num[i]){
                max=num[i];
            }else if(min>num[i]){
                min=num[i];
            }

        }System.out.println("最大值:Max="+max+",最小值:Min="+min);
    return  num;
    }
}

在这里插入图片描述
11、编写要求:使用方法随即定义一个数组,进行选择排序

public class Oderby {
    public static void main(String[] args) {
        Scanner can=new Scanner(System.in);
        System.out.println("请输入要创建的数组长度:");
        Random R=new Random();

        //创建显示数组
        int[] num=Creat(can.nextInt(),R);
        //选择排序
        Order(num);
    }
    //创建数组
    public static int[] Creat(int c,Random r){
        String s="[";
        int [] num=new int[c];
        for (int i = 0; i < num.length; i++) {
           num[i]=r.nextInt(100)+1;
           if(i==num.length-1){
               s=s+(num[i]+"]");
           }else{
               s=s+(num[i]+",");
           }
        }
        System.out.print(s);
        return num;
    }
    //选择排序
    public static void Order(int[] num){
        for (int i = 0; i < num.length-1; i++) {
            int Min=i;
            for (int j = i; j < num.length; j++) {
                if(num[Min]>num[j]){
                   Min=j;
                }
            }
            if(num[Min]!=num[i]){
                num[Min]=num[i]^num[Min];
                num[i]=num[i]^num[Min];
                num[Min]=num[i]^num[Min];
            }
        }
        System.out.println(Arrays.toString(num));
    }
}

12、打印杨辉三角
方法一:

public class YanghuiTriangle {
    public static void main(String[] args) {
        //打印杨辉三角
        System.out.println("请输入要创建的杨辉三角行数");
        int num=new Scanner(System.in).nextInt()+1;
        int[][] Triangle=new int[num][num];
        for (int i = 0; i < Triangle.length; i++) {
            //打印空格
            for (int j = 0; j < Triangle.length-i; j++) {
                System.out.print(" ");
            }
            for (int j = 0; j < i; j++) {
                if(j==0||i==j){//外层为1
                    Triangle[i][j]=1;
                }else{
                    Triangle[i][j]=Triangle[i-1][j]+Triangle[i-1][j-1];
                }
                System.out.print(Triangle[i][j]+" ");
            }
            System.out.println();

        }
    }
}

在这里插入图片描述
可以看出第六行输出位置有偏差,是因为10双位数的出现,导致与上面不协调


方法二:

public class Triangle {
 	public static void main(String[] args) {
		int rows = 10;
		for (int i = 0; i < rows; i++) {
			int number = 1;
			// 打印空格字符串
			System.out.format("%" + (rows - i) * 2 + "s", "");
			for (int j = 0; j <= i; j++) {
				System.out.format("%4d", number);
				number = number * (i - j) / (j + 1);
			}
			System.out.println();
		}
	}
}

在这里插入图片描述

  • 随机数公式:Math.random(Max - Min + 1) + Min

13、题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

public class WeiQ {
    public static void main(String[] args) {
        System.out.println("请输入人数:");
        int people=new Scanner(System.in).nextInt();
        boolean[] num=new boolean[people];
        for (int i = 0; i <num.length; i++) {
            num[i]=true;
        }
        int countPeople=people;//总人数
        int cnum=0;//报数1,2,3,4
        int index=0;//索引0,1,2,3
        while(countPeople>1){//当总人数大于1
            //对第一个人判断
            if(num[index]){//当第一个人true时
                cnum++;//报数+1
                if(cnum%3==0){//当报数能被三整除,则人退出
                    //System.out.print(cnum);
                  countPeople--;//人-1;
                  num[index]=false;//此人false表示退出状态
                  cnum=0;//重新报数
                   // System.out.print(countPeople);
                }
            }
            //下一个人
            index++;//下一个人继续
            if(index==people){//如果到最后一个人,即一圈,则再次进行下一圈
                index=0;
            }

        }
        System.out.println("最后剩一个人是:"+(index+1));
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

每日小新

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值