Java 小练习(简单)—合集

1.while循环练习:回文数
    需求:给你一个整数x,如果x是一个回文整数,打印true,否则返回false
    解释:回文数是指正序和倒序读都是一样的整数
 public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个整数:");
        int number = sc.nextInt();
        int temp = number;//定义一个临时变量用来记录number的值
        int num = 0;
        while (number != 0) {
            int ge = number % 10;
            number = number / 10;
            num = num * 10 + ge;
        }
        System.out.println(num == temp);
    }
2.for循环练习:求平方根
    需求:键盘录入一个大于等于2的整数x,计算并返回x的平方根。结果只保留整数部分,小数部分将被舍去。 
public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个整数:");
        int number = sc.nextInt();
        for (int i = 1; i <= number; i++) {
            if (i * i == number) {
                System.out.println(i + "就是" + number + "的平方根");
                break;//一旦找到,循环就可以停止,后面的数字不用再找,提高代码的运行效率
            } else if (i * i > number) {
                System.out.println((i - 1) + "就是" + number + "平方根的整数部分");
                break;
            }
        }
    }
3.for循环练习:求质数
    需求:键盘录入一个正整数x,判断该整数是否为一个质数。
    质数:只能被1和本身整除,否则为合数。
 public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个整数:");
        int number = sc.nextInt();
        boolean flag = true;//表示最初就认为number是一个质数
        for (int i = 2; i < number; i++) {
            if (number % i == 0) {
                flag = false;
                break;
            }

        }
        if (flag) {
            System.out.println(number + "是一个质数");
        } else {
            System.out.println(number + "不是一个质数");
        }
    }
4.while循环练习:数字炸弹小游戏
    需求:程序自动生成一个1-100之间的随机数,使用程序实现猜出这个数字是多少?
public static void main(String[] args) {
        Random r = new Random();
        int number = r.nextInt(100) + 1;//表示生成一个1-100的随机数
        while (true) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入你猜测的数字:");
            int guessnumber = sc.nextInt();
            if (guessnumber == number) {
                System.out.println("猜对啦!");
                break;
            } else if (guessnumber > number) {
                System.out.println("猜大了!");
            } else {
                System.out.println("猜小了!");
            }
        }
    }
5.数组练习:遍历数组求和
    需求:生成10个1~100之间的随机数存入数组
    1.求出所有数据的和
    2.求出所有数据的平均值
    3.统计有多少个数据比平均值小
//一个循环尽量只做一个操作
public static void main(String[] args) {
        int[] arr = new int[10];
        Random r = new Random();
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            arr[i] = r.nextInt(100) + 1;
        }
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        System.out.println("数组中的数据和为:"+sum);
        int average = sum / arr.length;
        System.out.println("数组中的平均数为:"+average);
        int count=0;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i]<average){
                count++;
            }
        }
        System.out.println("数组中的小于平均数的个数为:"+count);
    }
6.数组练习:交换数组中的数组
    需求:定义一个数组,存入1,2,3,4,5。按照要求交换索引对应的元素
    交换前:1,2,3,4,5
    交换后:5,4,3,2,1
public static void main(String[] args) {
        int[] arr = new int[]{1, 2, 3, 4, 5};
        for (int i = 0, j = arr.length - 1; i < j; i++, j--) {
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]);
        }
    }
7.数组练习:打乱数组中的数据
    需求:定义一个数组,存入1~5.要求打乱数组中所有数据的顺序
public static void main(String[] args) {
        int[] arr = new int[]{1, 2, 3, 4, 5};
        Random r=new Random();
        for (int i = 0; i < arr.length; i++) {
            int index= r.nextInt(arr.length);
            int temp=arr[i];
            arr[i]=arr[index];
            arr[index]=temp;
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]);
        }
    }
8.方法练习:复制数组
    需求:定义一个方法copyOfRange(int[] arr,int from,int to)
    功能:将数组arr中从索引from(包括from)开始。
    到索引to结束(不包含to)的元素复制到新数组中,将新数组返回。
public static void main(String[] args) {
        int[] arr = {101, 202, 303, 404, 505, 606, 707, 808, 909};
        //方法调用
        int[] newarr = copyOfRange(arr, 2, 6);
        for (int i = 0; i < newarr.length; i++) {
            System.out.println(newarr[i]);
        }
    }

//方法定义
public static int[] copyOfRange(int[] arr, int from, int to) {
        int newarr[] = new int[to - from];
        for (int i = from, j = 0; i < to; i++, j++) {
            newarr[j] = arr[i];
        }
        return newarr;
    }
9.综合练习:卖飞机票
    需求:机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。
    按照如下规则计算机票价格:旺季(5-10月)头等舱9折,经济舱8.5折,淡季(11月到来年4月)头等舱7折,经济舱6.5折。
public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入机票原价:");
        int price = sc.nextInt();
        System.out.println("请输入当前月份:");
        int month = sc.nextInt();
        System.out.println("请输入购买的舱位(0:头等舱 1:经济舱):");
        int seat = sc.nextInt();
        switch (month) {
            case 5, 6, 7, 8, 9, 10:
                System.out.println("您的飞机票原价为" + price + "元,打完折后需要" + getPrice(price, seat, 0.9, 0.85) + "元");
                break;
            case 11, 12, 1, 2, 3, 4:
                System.out.println("您的飞机票原价为" + price + "元,打完折后需要" + getPrice(price, seat, 0.7, 0.65) + "元");
                break;
            default:
                System.out.println("输入的月份有误!");
                break;
        }
    }

    public static double getPrice(int price, int seat, double v0, double v1) {
        double newPrice = 0;
        if (seat == 0) {
            newPrice = price * v0;
        } else if (seat == 1) {
            newPrice = price * v1;
        } else {
            System.out.println("没有这个舱位!");
        }
        return newPrice;
    }
10.综合练习:生成验证码
    需求:定义发方法实现随机产生一个5位的验证码
    验证格式:长度为5,前四位是大写字母或者小写字母,最后一位是数字。
public static void main(String[] args) {
        char[] chs = new char[52];
        for (int i = 0; i < chs.length; i++) {
            if (i <= 25) {
                chs[i] = (char) (97 + i);
            } else {
                chs[i] = (char) (65 + i - 26);
            }
        }

        String result = "";

        //生成随机的字母
        Random r = new Random();
        for (int i = 0; i < 4; i++) {
            int randominedx = r.nextInt(chs.length);
            result += chs[randominedx];
        }

        //生成随机的数字
        int number = r.nextInt(10);
        result += number;

        //输出随机生成的五位验证码
        System.out.println(result);
    }
11.综合练习:数字加密及解密
    需求:某系统的数字密码(大于0),比如1983,采用加密方式进行传输。
    规则如下:先得到每位数,然后每位加5,再对10求余,最后将所有数字反转,得到一串新数,最后根据得到的新数解密出来原密码。
public static void main(String[] args) {
		//数字加密
        System.out.println("----数字加密----");
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个数字:");
        int number = sc.nextInt();
        int temp = number;
        int count = 0;
        while (number != 0) {
            number /= 10;
            count++;
        }
        int[] arr = new int[count];
        int index = arr.length - 1;
        while (temp != 0) {
            int ge = temp % 10;
            temp /= 10;
            arr[index] = ge;
            index--;
        }
        //每位数+5
        for (int i = 0; i < arr.length; i++) {
            arr[i] += 5;
        }
        //对10取余
        for (int i = 0; i < arr.length; i++) {
            arr[i] %= 10;
        }
        //将所有数字反转
        for (int i = 0, j = arr.length - 1; i < j; i++, j--) {
            int temp1 = arr[i];
            arr[i] = arr[j];
            arr[j] = temp1;
        }

        int num = 0;
        for (int i = 0; i < arr.length; i++) {
            num = num * 10 + arr[i];
        }
        System.out.println(num);

        //数字解密
        System.out.println("----数字解密----");
        //将所有数字反转
        for (int i = 0, j = arr.length - 1; i < j; i++, j--) {
            int temp2 = arr[i];
            arr[i] = arr[j];
            arr[j] = temp2;
        }
        //对10取余
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] >= 0 && arr[i] <= 4) {
                arr[i] += 10;
            }
        }
        for (int i = 0; i < arr.length; i++) {
            arr[i] -= 5;
        }


        int num2 = 0;
        for (int i = 0; i < arr.length; i++) {
            num2 = num2 * 10 + arr[i];
        }
        System.out.println(num2);
    }
12.综合练习:抢红包
    在参加抽奖活动时,奖品是现金红包,分别有{2,588,888,1000,10000}五个奖金。
    请使用代码模拟抽奖,打印出每个选项,奖项的出现顺序要随机且不重复。
public static void main(String[] args) {
        int[] arr = {2, 588, 888, 1000, 10000};
        Random r=new Random();
        for (int i = 0; i < arr.length; i++) {
            int randomIndex=r.nextInt(arr.length);
            int temp=arr[i];
            arr[i]=arr[randomIndex];
            arr[randomIndex]=temp;
        }
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
13.字符串练习:用户登录
    需求:已知正确的用户名和密码,请用程序实现模拟用户登录。
    总共给三次机会,登录之后,给出相应提示。
public static void main(String[] args) {
        String rightUsername = "zhangsan";
        String rightPassword = "123456";

        for (int i = 2; i >= 0; i--) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入用户名:");
            String username = sc.next();
            System.out.println("请输入密码:");
            String password = sc.next();
            if (username.equals(rightUsername) && password.equals(rightPassword)) {
                System.out.println("输入正确,登录成功!");
                break;
            } else {
                if (i == 0) {
                    System.out.println("错误次数已达3次,账号被锁定!");
                } else {
                    System.out.println("用户名或密码输入错误!(你还剩下" + i + "次机会)");
                }
            }
        }
    }
14.字符串练习:手机号屏蔽
    截取:String substring(int beginIndex,int endIndex)
    截取到末尾:String substring(int beginIndex)
    注意:包头不包尾,包左不包右;只有返回值才是截取的小串
 public static void main(String[] args) {
        String phoneNumber = "1234567891";
        //1.截取手机号前3位
        String start = phoneNumber.substring(0, 3);
        //2.截取手机号后四位
        String end = phoneNumber.substring(7);
        //3.拼接
        String result = start + "****" + end;
        System.out.println(result);
    }
15.字符串练习:敏感词替换
    替换:String replace(旧值,新值)
    注意点:只有返回值才是替换之后的结果
public static void main(String[] args) {
        String talk = "你玩的真好,以后不要再玩了,MD,SB";

        //定义一个敏感词库
        String[] arr = {"TMD", "MD", "SB"};
        for (int i = 0; i < arr.length; i++) {
            talk = talk.replace(arr[i], "***");
        }
        System.out.println(talk);
    }
16.字符串练习:金额转换
    针对发票的金额转换,转换的金额为7位,不足7位的金额前面需补0
public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请录入一个金额:");
        int money = sc.nextInt();

        //1.判断输入的金额是否有效
        while (true) {
            if (money >= 0 && money <= 9999999) {
                break;
            } else {
                System.out.println("金额无效!");
            }
        }

        //2.将数字金额转换成大写方式
        String moneystr = "";//用来存储金额的大写
        while (true) {
            int ge = money % 10;
            String capitalNumber = getCapitalNumber(ge);

            moneystr = capitalNumber + moneystr;
            money /= 10;
            if (money == 0) {//如果数字上的每位都获取到了,那么money记录的就是0,此时循环结束
                break;
            }
        }

        //3.不足7位就补零
        int count = 7 - moneystr.length();
        for (int i = 0; i < count; i++) {
            moneystr = "零" + moneystr;
        }

        //4.插入单位
        String[] arr = {"佰", "拾", "万", "仟", "佰", "拾", "元"};
        String result = "";
        for (int i = 0; i < moneystr.length(); i++) {
            char c = moneystr.charAt(i);
            result += c + arr[i];
        }
        System.out.println(result);
    }
    
//定义一个方法把数字变成大写的中文
public static String getCapitalNumber(int number) {
        String[] arr = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
        return arr[number];
    }
17.字符串综合练习:转换罗马数字
    键盘录入一个字符串,
    要求:长度小于等于9,只能是数字
    将内容变成罗马数字
    下面是阿拉伯数字与罗马数字的对比关系:
    1:Ⅰ,2:Ⅱ,3:Ⅲ,4:Ⅳ,5:Ⅴ,6:Ⅵ,7:Ⅶ,8:Ⅷ,9:Ⅸ
public static void main(String[] args) {
        String str;
        while (true) {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入一个字符串:");
            str = sc.next();

            boolean flag = checkStr(str);
            if (flag) {
                break;
            } else {
                System.out.println("当前输入的字符格式不正确,请重新输入!");
            }
        }

        StringJoiner sj = new StringJoiner(",");
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            int number = c - 48;

            sj.add(changeLuoMa(number));
        }
        System.out.println(sj);
    }
    
//校验字符串是否满足要求
public static boolean checkStr(String str) {
        if (str.length() > 9) {
            return false;
        }
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            if (c < '0' || c > '9') {
                return false;
            }
        }
        return true;
    }

//将输入的阿拉伯数字转换成罗马数字
 public static String changeLuoMa(int number) {
        String[] arr = {"", "Ⅰ", "Ⅱ", "Ⅲ", "Ⅳ", "Ⅴ", "Ⅵ", "Ⅶ", "Ⅷ", "Ⅸ"};
        return arr[number];
    }
18.面向对象综合练习:对象数组
    定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据,学生对象的学号,姓名各不相同。
    学生的属性:学号,姓名,年龄。
    要求1:再次添加一个学生对象,并在添加的时候进行学号的唯一性判断。
    要求2:添加完毕之后,遍历所有学生信息。
    要求3:通过id删除学生信息
         如果存在,则删除,如果不存在,则提示删除失败。
    要求4:删除完毕之后,遍历所有学生信息。
    要求5:查询数组id为“2”的学生,如果存在,则将他的年龄+1岁
javabean类:Students.java
public class Students {
    private int stuId;
    private String name;
    private int age;

    public Students() {
    }

    public Students(int stuId, String name, int age) {
        this.stuId = stuId;
        this.name = name;
        this.age = age;
    }

    public void setStuId(int stuId) {
        this.stuId = stuId;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getStuId() {
        return stuId;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

studentInfo.java
public static void main(String[] args) {
		//1.创建一个数组用来存储学生对象
        Students[] stus = new Students[3];

        //2.创建学生对象并添加到数组当中
        Students stu1 = new Students(1, "张三", 18);
        Students stu2 = new Students(2, "李四", 16);
        Students stu3 = new Students(3, "王五", 17);

        //3.把学生信息添加到数组中
        stus[0] = stu1;
        stus[1] = stu2;
        stus[2] = stu3;

        //要求1:再次添加一个学生对象,并在添加的时候进行学号的唯一性判断。
        Students stu4 = new Students(4, "孙七", 20);
        contains(stus, stu4.getStuId());
        if (false) {
            System.out.println("当前ID已存在,请重新输入!");
        } else {
            int count = getCount(stus);
            if (count == stus.length) {
                //数组已经存满
                Students[] newStus = creatNewarr(stus);
                newStus[count] = stu4;

                //要求2:添加完毕之后,遍历所有学生信息。
                System.out.println("--所有学生信息--");
                printArr(newStus);
            } else {
                //数组没有存满
                stus[count] = stu4;

                //要求2:添加完毕之后,遍历所有学生信息。
                System.out.println("--所有学生信息--");
                printArr(stus);
            }
        }

        //要求3:通过id删除学生信息
        /*
        int index = getIndex(stus, 1);
        if (index >= 0) {
            //如果存在,则删除
            stus[index] = null;
            System.out.println("--删除后学生信息--");
            printArr(stus);
        } else {
            //如果不存在,则提示删除失败
            System.out.println("当前ID不存在,删除失败!");
        }
         */

        //要求5:查询数组id为“2”的学生,如果存在,则将他的年龄+1岁
        int index = getIndex(stus, 2);
        if (index >= 0) {
            //存在
            Students stu = stus[index];
            int neaAge = stu.getAge() + 1;
            stu.setAge(neaAge);

            System.out.println("--修改后学生信息--");
            printArr(stus);
        } else {
            //不存在
            System.out.println("当前ID不存在,修改失败!");
        }
    }

    //找到id在数组中的索引
    public static int getIndex(Students[] stus, int id) {
        for (int i = 0; i < stus.length; i++) {
            Students stu = stus[i];
            if (stu != null) {
                int sid = stu.getStuId();
                if (sid == id) {
                    return i;
                }
            }
        }
        return -1;
    }

    //遍历所有学生信息
    public static void printArr(Students[] stus) {
        for (int i = 0; i < stus.length; i++) {
            Students s = stus[i];
            if (s != null) {
                System.out.println(s.getStuId() + "," + s.getName() + "," + s.getAge());
            }
        }
    }

    //当数组长度不够时,创建新数组,并把旧数组的数据存入新数组中
    public static Students[] creatNewarr(Students[] stus) {
        Students[] newStus = new Students[stus.length + 1];
        for (int i = 0; i < stus.length; i++) {
            newStus[i] = stus[i];//把老数组的元素添加到新数组中
        }
        return newStus;
    }

    //判断数组里面的空间是否已经存满数据
    public static int getCount(Students[] stus) {
        int count = 0;
        for (int i = 0; i < stus.length; i++) {
            if (stus[i] != null) {
                count++;
            }
        }
        return count;
    }

    //判断学号是否存在
    public static boolean contains(Students[] stus, int id) {
        for (int i = 0; i < stus.length; i++) {
            Students stu = stus[i];
            if (stu != null) {
                int sid = stu.getStuId();
                if (sid == id) {
                    return true;
                }
            }
        }
        return false;
    }
19.集合练习:添加手机对象并返回要求的数据
    需求:定义javabean类(Phone)
    Phone属性:品牌,价格。
    main方法中定义一个集合,存入三个手机对象。
    分别为小米,1000。苹果,8000。锤子,2999.
    定义一个方法,将价格低于3000的手机信息返回。
javabean类:Phone.java
public class Phone {
    private String brand;
    private int price;

    public Phone() {
    }

    public Phone(String brand, int price) {
        this.brand = brand;
        this.price = price;
    }

    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }
}

phoneInfo.java
public static void main(String[] args) {
        ArrayList<Phone> list=new ArrayList<>();

        Phone p1=new Phone("小米",1000);
        Phone p2=new Phone("苹果",8000);
        Phone p3=new Phone("锤子",2999);

        list.add(p1);
        list.add(p2);
        list.add(p3);

        ArrayList<Phone> phoneInfoList=getPhoneInfo(list);
        for (int i = 0; i < phoneInfoList.size(); i++) {
           Phone phone= phoneInfoList.get(i);
            System.out.println(phone.getBrand()+","+phone.getPrice());
        }
    }
 
public static ArrayList<Phone> getPhoneInfo(ArrayList<Phone> list){
        ArrayList<Phone> resultList=new ArrayList<>();//定义一个集合:用于存储手机价格低于3000的手机对象
        for (int i = 0; i < list.size(); i++) {
            Phone p=list.get(i);
            int price=p.getPrice();
            if (price<3000){
                resultList.add(p);
            }
        }
        return resultList;
    }
20.集合练习:添加用户对象并判断是否存在
    需求:main方法中定义一个集合,存入三个用户对象。
        用户属性为:id,username,password
    要求:定义一个方法,根据id查找对应的用户信息。
        如果存在,返回true
        如果不存在,返回false
User.java
public class User {
    private String id;
    private String username;
    private String password;

    public User() {
    }

    public User(String id, String username, String password) {
        this.id = id;
        this.username = username;
        this.password = password;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

userInfo.java
public static void main(String[] args) {
        /*集合练习:添加用户对象并判断是否存在
        需求:main方法中定义一个集合,存入三个用户对象。
            用户属性为:id,username,password
        要求:定义一个方法,根据id查找对应的用户信息。
            如果存在,返回true
            如果不存在,返回false
         */

        ArrayList<User> list = new ArrayList<>();

        User user1 = new User("user001", "张三", "123456");
        User user2 = new User("user002", "李四", "1234567");
        User user3 = new User("user003", "王五", "12345678");

        list.add(user1);
        list.add(user2);
        list.add(user3);

        boolean flag = checkId(list, "user005");
        System.out.println(flag);
    }
    
public static boolean checkId(ArrayList<User> list, String id) {
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i).getId().equals(id)) {
                return true;
            }
        }
        return false;
    }

📢欢迎点赞👍 收藏🌟 留言💬
📢单纯分享日常中的小练习,技术有限,如果发现有错欢迎指导

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值