Java练习题

一、循环判断

1.定义一个数字,判断该数字是几位数,使用循环来实现。

2.定义一个数字,判断该数字是否包含7。

3.定义一个三位数,求出个位,十位,百位。

4.输出出100~999的水仙花数,并输出总共有几个水仙花数。

5.模拟登录,输入账号密码,如果账号是admin,就继续输入密码,否则就提示账号不存在请重新输入;账号输入正确后提示输入密码,是123456就提示登录成功,否则提示密码有误请重新输入,给三次机会,三次密码错误就提示账户锁定,程序结束!

5.⼀只猴⼦第⼀天摘下若⼲个桃⼦,当即吃了⼀半,还不过瘾,⼜多吃了⼀个;第⼆天早上⼜将剩下的桃⼦吃掉⼀半,⼜多吃了⼀个。以后每 天早上都吃了前⼀天剩下的⼀半加⼀个。到第10天早上想再吃时,见只剩下⼀个桃⼦了。问:第⼀天共摘了多少个桃⼦?

6.定义数字,判断它是否是一个回文数(正着读和倒着读都一样)。如:1234321就是回文数。

7.共有50枚硬币,可能包括4种类型:1元,5角,1角,5分。已知总价值为20元。求各种硬币的数量。

8.鸡兔同笼问题:鸡兔一共35只,笼子里脚共有94只,请问分别有多少只鸡和多少只兔子。

9.幸运猜猜猜:游戏随机给出一个0~99的数字,然后让你猜是什么数字。你可以随便猜一个数字,游戏会提示太大还是太小,从而缩小结果范围。经过几次猜测与提示后,最终推出答案。在游戏过程中,记录你最终猜对时所需要的次数,游戏结束后公布结果。

10.打印如下所示内容,键盘录入行数。

     1

   1 2 1

1 2 3 2 1

11.键盘录入1-12任意数字,根据数字判断是春夏秋冬哪个季节,使用方法实现该功能。

二、数组(基本类型)

1.main方法定义长度为15的数组。

2.定义方法,给数组赋值,偶数位索引键盘录入,奇数位索引随机生成100~500的数来给数组动态赋值。

3.第二步要求数组中数字不能重复,不能是3的倍数,不能包含5,每次随机出现的数字不符合要求,做出对应的提示,赋值完毕后,输出数组的内容。

4.定义方法求出数组的最大值、最小值及其索引并输出。

5.定义方法交换数组的最大值最小值位置输出数组内容。

6.定义方法输入一个数,查找下数组中是否存在,如果存在输出该数在数组中的索引。

7.定义方法数组元素反转输出数组内容。

8.定义方法将数组中的元素扩大2倍并输出。

9.定义方法对数组元素进行冒泡升序排序,并输出。

10.定义方法对数组元素进行冒泡降序排序,并输出。

11.将输出数组内容的功能封装为方法。

12.定义方法删除数组中能被5整除的元素。

13.判断数组中有几个水仙花数,输出水仙花数和个数。

14.上述功能全部抽为方法,放到数组工具类中。

三、数组对象(学生管理系统)

1.定义User类,用于用户登录注册,有String name账户,String password密码两个属性。

2.定义学生Student类,属性String name,int age,char sex,学号int id(不能重复),期中成绩(满分100分)int qzScore,期末成绩(满分100分)int qmScore,面试成绩(满分10分)int msScore,升班要求:期中成绩*15%+期末成绩*75%+面试成绩>=80。
3.定义测试类,创建静态User数组,长度为3,用于用户注册登录校验;创建静态Student数组,长度为20,静态初始化10条学生信息(学生信息数据全部为随机生成,id学号不能重复)。

4.在测试类中,做登录注册提示

a.注册时可以循环注册,最多注册三个User用户,用户名不能重复,如果注册第四个用户提示账户注册已满,不可注册。

b.游客进入,可以使用临时账户Guest来进入学生管理系统

c.登录需根据注册的User信息来登录,如果输入用户名不存在则提示用户名不存在,如果用户名存在密码错误,则提示密码错误。

d.登录成功后,使用当前用户名来进入学生管理系统

//还没学面向对象,账号密码用数组存储

import java.util.Arrays;
import java.util.Scanner;

public class 登录注册 {

    /**
     * 4.在测试类中,做登录注册提示
     * a.注册时可以循环注册,最多注册三个User用户,用户名不能重复,
     * 如果注册第四个用户提示账户注册已满,不可注册。
     * b.游客进入,可以使用临时账户Guest来进入学生管理系统
     * c.登录需根据注册的User信息来登录,如果输入用户名不存在则提示用户名不存在,如果用户名存在密码错误,则提示密码错误。
     * d.登录成功后,使用当前用户名来进入学生管理系统
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //当前登录的用户
        String userName = null;
        //创建长度为6的字符串数组,来保存用户名和密码
        String[] users = new String[6];//{账号1,密码1,账号2,密码2,账号3,密码3},字符串数组默认每个元素都是null
        //菜单功能
        out:while(true){
            menu();
            System.out.println("请输入要选择的功能编号:");
            int num = sc.nextInt();
            switch (num) {
                case 1://登录
                    userName = login(users);
                    if(userName!=null){//登录成功
                        break out;
                    }
                    break;
                case 2://注册
                    register(users);
                    System.out.println(Arrays.toString(users));//打印数组信息
                    break;
                case 3://游客登录
                    userName = "guest";
                    break out;
                case 0://退出
                    System.out.println("退出系统!");
//                    System.exit(0);//退出JVM
                    return;//结束main方法,相当于结束程序
                default://输入有误
                    System.out.println("输入编号有误!");
                    break;
            }
        }
        //提示
        System.out.println("=================欢迎"+userName+"进入学生管理系统=================");
    }

    /**
     * 登录
     * @param users
     * @return
     */
    public static String login(String[] users){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入用户名和密码,以空格隔开:");
        String userName = sc.next();
        String password = sc.next();

        //判断用户名是否存在
        boolean nameIsExist = nameIsExist(users, userName);
        if(!nameIsExist){//不存在,结束
            System.out.println("用户名不存在!");
            return null;
        }

        //判断登录信息是否正确
        for (int i = 0; i < users.length; i+=2) {
            //判断账号和密码信息
            if(users[i] != null && users[i].equals(userName)){//条件满足,说明用户名存在
                if(users[i+1].equals(password)){//对应密码正确
                    System.out.println("登录成功!");
//                    return userName;
                    return users[i];//返回当前的用户名
                }else{
                    System.out.println("密码错误!");
                    return null;// 密码错误,当前账号也为null
                }
            }
        }

       return null;//用户名密码不对
    }

    /**
     * a.注册时可以循环注册,最多注册三个User用户,用户名不能重复,
     *  如果注册第四个用户提示账户注册已满,不可注册。
     */
    public static void register(String[] users){
        Scanner sc = new Scanner(System.in);
        //找空位置
        for (int i = 0; i < users.length; i+=2) {
            if(users[i] == null){//说明有空位置
                System.out.println("请输入用户名:");
                String userName = sc.next();
                System.out.println("请输入密码:");
                String password = sc.next();

                //调用方法:判断用户名是否已经存在
               boolean nameIsExist = nameIsExist(users,userName);
               if(nameIsExist){
                   System.out.println("用户名已存在!");
                   return;
               }

                //保存注册的信息
                users[i] = userName;
                users[i+1] = password;
                System.out.println("注册成功!");
                return;//注册完毕后,直接结束,否则可能会继续提示注册
            }
        }

        //没有空位置,不能注册
        System.out.println("用户注册已达上限,不能再注册!");
    }

    /**
     * 判断用户名是否已存在
     * @param users
     * @param userName
     * @return
     */
    public static boolean nameIsExist(String[] users,String userName){
        //users:{账号1,密码1,账号2,密码2,账号3,密码3},
        for (int j = 0; j < users.length; j+=2) {
            if(users[j] != null && users[j].equals(userName)){//条件满足,说明用户名存在
                return true;//结束方法,注册失败
            }
        }

        //不存在
        return false;
    }
    /**
     * 菜单功能
     */
    public static void menu(){
        System.out.println("===========登录菜单==========");
        System.out.println("===========1.登录==========");
        System.out.println("===========2.注册==========");
        System.out.println("===========3.游客进入==========");
        System.out.println("===========0.退出==========");
    }
}

5.学生管理系统完成菜单中所有功能

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值