Java基础综合练习题

猜数字小游戏

随机产生一个[1,100]范围内的数据,采用键盘录入的方式猜这个数字是多少。
如果键盘录入的数字比随机数大,输出猜大了
如果键盘录入的数字比随机数小,输出猜小了
如果键盘录入的数字比随机相同,输出猜中了
如果猜大了或者猜小了可以重复猜,如果猜中了就游戏结束。

//随机产生一个[1,100]范围内的数据
Random r=new Random();
int num=r.nextInt(100)+1; 
//采用键盘录入你猜的整数
Scanner sc=new Scanner(System.in);
while(true){ 
    System.out.println("请输入你猜的整数:");
	int myNum=sc.nextInt(); 
    //比较猜的数据是否正确
    if(myNum>num){
        System.out.println("猜大了");
    }else if(myNUm<num){
        System.out.println("猜小了");
    }else{
        System.out.println("恭喜你,猜中了^_^");
        break;
    }
}

生成验证码

写一个方法,用来生成4个字符组成的验证码,验证码可以是字母和数字组成。

public class Test3 {
    public static void main(String[] args) {
        //一般验证码包含 大写字母、小写字母和0~9的数字。我随机生成这些字符组成一个字符串就是验证码
        //每一个字符都有一个编码值对应,这个对应关系就是ASCII码表
        /*
        * 查询ASCII编码,常见字符和整数的对应关系如下
        *   'a'~'z'     97~122     26个
        *   'A'~'Z'   65~90        26个
        *   '0'~'9'   48~57        10个
        */

        //定义一个char[]用来存储所有的字符
        char[] chs=new char[62];
        int index=0;//索引从0开始

        //把'a'~'z'的所有小写字母,存储到数组中
        for(char i='a';i<='z';i++){
            chs[index]=i;
            index++;
        }

        //把'A'~'Z'的所有大写字母,存储到数组中
        for(char i='A';i<='Z';i++){
            chs[index]=i;
            index++;
        }

        //把'0'~'9'的所有数字字符,存储到数组中
        for(char i='0';i<='9';i++){
            chs[index]=i;
            index++;
        }

        //再从chs数组中随机产生4个字符,组成一个字符串,就是随机的验证码
        Random r=new Random();
        String str=""; //一个空的字符串,用于验证码的拼接
        for (int i = 0; i < 4; i++) {
            //随机产生一个索引
            int j=r.nextInt(chs.length);
            str+=chs[j];
        }

        //最终str就是验证码
        System.out.println(str); 
    }
}

随机点名器

键盘录入5个学生的姓名,然后随机产出一个学生的姓名。

//键盘录入5个姓名,存储到String数组中
String[] names=new String[5];
Scanner sc=new Scanner(System.in);
for(int i=0;i<5;i++){
    System.out.println("键盘录入一个姓名:");
	String name=sc.next(); //键盘录入字符串
    //把录入的姓名赋值给数组的元素
    names[i]=name;
}

//随机从数组中获取一个元素,就是随机产生的姓名
Random r=new Random();
int index=r.nextInt(names.length);
//通过索引获取姓名
String name=names[index];
System.out.println("随机产生的姓名是:"+name); 

斐波那契数列

不死神兔问题,其实本质上就是一个数列问题叫做斐波那契数列。

数列如下:
1	1	2	 3	 5	8	13	21	...
/*
找规律:
	1.第一个数和第二个数都是1
	2.从第三个数开始,这个数等于前面两个整数之和
根据以上的规律,求第n个数是多少?

思路:
	1.创建长度为n的数组array
	2.按照规律给数组中的元素赋值
		//第一个数和第二个数都是1
		array[0]=1;
		array[1]=1;
		//从第三个数开始这个数等于前面两个整数之和
		array[i]=array[i-1]+array[i-2]
*/
public class Test5 {
    public static void main(String[] args) {
        //创建长度为n的数组array
        int[] array=new int[20];
        //第一个数和第二个数都是1
        array[0]=1;
        array[1]=1;

        //从第三个数开始这个数等于前面两个整数之和
        for(int i=2;i<array.length;i++){
            array[i]=array[i-1]+array[i-2];
        }

        //求数组的最后一个元素
        System.out.println(array[array.length-1]);
    }
}

评委打分案例

假设跳水运动中,键盘录入6个评委分别给运动员打分,每一个评委给出的分数是0~10分,按照规则需要去掉最高分,去掉最低分,然后计算平均分才是该运动员最终得分。

/*
思路:
	1.键盘录入6个整数[0,10],存储到数组中
	2.求数组中元素的最大值
	3.求数组中元素的最小值
	4.求数组中元素的和,减去最大值和最小值
	5.求平均值
*/
public class Test6{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        //用来存键盘录入的分数
        int[] array=new int[6];
        for(int i=0;i<6;i++){
            //把键盘录入的整数,直接赋值给数组的元素。
            array[i]=sc.nextInt();
        }
        
        //求数组中元素的最大值
        int max=array[0];
        for(int i=1;i<array.length;i++){
            if(array[i]>max){
                max=array[i];
            }
        }
        
        //求数组中元素的最小值
        int min=array[0];
        for(int i=1;i<array.length;i++){
            if(array[i]<min){
                min=array[i];
            }
        }
        
        //求数组中元素的和
        int sum=0;
        for(int i=0;i<array.length;i++){
            sum+=array[i];
        }
        
        //求去掉最大值和最小值后的平均值
        double avg=(sum-max-min)*1.0/(array.length-2)
        System.out.println("最终得分:"+avg);
    }
}

停车收费系统

停车场要做一个停车收费系统,收费标准是5元/小时,不足一小时按一小时算。键盘录入停车的分钟数,输出对应的金额。

//键盘录入停车的分钟数
Scanner sc=new Scanner(System.in);
System.out.println("请输入停车的分钟数:");
int min=sc.nextInt();

//把分钟转换为小时
int h;
if(min%60==0){ //整小时
    h=min/60;
}else{ //不是整小时
    h=min/60+1;
}

//计算金额
int money=h*5;
System.out.println("停车"+h+"小时,收费:"+money+"元"); 

双色球彩票

双色球彩票中,有33个红球,16个篮球,随机从33个红球中选出6个数字,从16个篮球中选出1个 数字,组成一注彩票。

/*
分析:
	1)一注双色球有7个数字组成,可以使用一个数组来存储
	2)其中前6个数字是从33个红球中来[1,33],后面1个数字是从16个蓝球中来[1,16]
		从[1,33]的范围内随机生成6个整数,存储到数组中
		从[1,16]的范围内随机生成1个整数,存储到数组中
	3)最终把数组的元素组成一个字符串
*/
public class Demo2 {
    public static void main(String[] args) {
        //1)一注双色球有7个数字组成,可以使用一个数组来存储
        int[] array=new int[7];

        Random r=new Random();
        //从[1,33]的范围内随机生成6个整数,存储到数组中
        int i=0;
        while (true){
            int num=r.nextInt(33)+1; //[0,32)+1 => [1,33]
            //查找num在数组中是否存在,如果得到索引说明存在,如果返回-1说明不存在。
            int index = getIndex(array, num);
            if(index==-1){
                array[i]=num;
                i++;
                if(i==6){
                    break;
                }
            }
        }

        //从[1,16]的范围内随机生成1个整数,存储到数组中
        array[6]=r.nextInt(16)+1;

        //3)最终把数组的元素组成一个字符串
        String s1="红球:";
        for (int j = 0; j < array.length; j++) {
            if(j<array.length-1){
                s1+=+array[j]+" ";
            }else {
                s1+="蓝球:"+array[j]+" ";
            }
        }
        System.out.println(s1);
    }

    //查找一个数组中元素的索引,如果没有找到返回-1
    public static int getIndex(int[] array,int key){
        for (int i = 0; i < array.length; i++) {
            if(array[i]==key){
                return i; //如果找到了,返回索引
            }
        }
        return -1; //如果返回-1,人为规定是找不到的意思。
    }
}
  • 6
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值