String和Math练习题

在这里插入图片描述![]

package com.zlj.kaikeba.example0602.stringMath;

import java.util.Scanner;

public class Test1 {
    public static void main(String[] args) {
        //反转键盘录入的字符串。
        Scanner input = new Scanner(System.in);
        System.out.println("请输入一个字符串");
        String string1 = input.nextLine();
        StringBuffer stringBuffer = new StringBuffer(string1);
        //Stringbuffer中的reverse()方法可以将字符序列反向替换
        System.out.println(stringBuffer.reverse());
        //接受被替代的字符串
        String string2 = stringBuffer.reverse().toString();

    }
}

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

package com.zlj.kaikeba.example0602.stringMath;

import java.util.Scanner;

public class Test2 {
    /**
     * 键盘录入QQ号码,验证格式的正确性。
     * 必须是5—12位数字。 0不能开头。
     */
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入你的QQ号码:");
        String num = input.nextLine();
        boolean correct = check(num);
        System.out.println("你输入的QQ号码:" + correct);
    }
    //用于返回格式是否正确
    public static boolean check(String num){
        //判断是否在5-12位之间
        if (num.length() < 5 || num.length() > 12){
            return false;
        }
        //循环判断输入的是否是数字,以及中间是否含有数字之外的值,使用字符串的charat()方法,返回指定索引处的 char值进行判断。
        for (int i = 0; i < num.length(); i ++){
            //判断首位是否为0
            if (num.charAt(0) == '0'){
                return false;
            }
            //利用ASCII码来判断是否输入的是0-9之间的数字
            if (num.charAt(i) < '0' || num.charAt(i) > '9'){
                return false;
            }
        }
        //如果上面都正确那么返回True
        return true;
    }

}

在这里插入图片描述

package com.zlj.kaikeba.example0602.stringMath;

import java.util.Scanner;

public class Test3 {
    /**
     * 字符串查找。
     * 键盘录入一个大字符串,再录入一个小字符串。
     * 统计小字符串在大字符串中出现的次数。
     */
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入大字符串:");
        String big = input.nextLine();
        System.out.println("请输入小字符串:");
        String small = input.nextLine();
        int time = count(big,small);
        System.out.println("小字符串在大字符串中出现的次数为:" + time + "次");
    }
    public static int count(String bigString,String smallSring){
        /**
         * indexOf(String str, int fromIndex)
         * string str:我们需要找的指定字符串
         * int fromIndex:传入开始查找指定索引
         * 从指定的索引处开始,返回指定子字符串第一次出现的字符串中的索引。没找到返回-1
         */
        int index = 0;
        int countNum = 0;
        while (true){
            index = bigString.indexOf(smallSring,index);
            if (index != -1){
                //index++是因为如果找到了第一次出现的索引,那么下次寻找我们就需要从第一次出现索引的下标开始寻找
                index ++;
                countNum ++;
            }else {
                break;
            }
        }
        return countNum;
    }
}

在这里插入图片描述

package com.zlj.kaikeba.example0602.stringMath;

import java.util.Scanner;

public class Test4 {
    /**
     * 替换某字符串中的某字符串。
     * 键盘录入一个srcStr字符串,再录入一个delStr字符串。
     * 删除该字srcStr符串中的所有delStr字符串。
     * 例如: 输入srcStr:java woaijava,i like jajavava i enjoy java 输入delStr:java 输出: woai,i like i enjoy
     * 用到的方法
     * replace​(char oldChar, char newChar), 返回从替换所有出现的一个字符串 oldChar在此替换为字符串 newChar 。
     *  char oldChar:需要被我们替换的字符
     *  char newChar:替换后的字符串
     */
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        String srcStr = input.nextLine();
        System.out.println("请输入你要替换的字符串:");
        String delStr = input.nextLine();
        String resStr = srcStr.replace(delStr,"");
        System.out.println(resStr);
    }
}

在这里插入图片描述

package com.zlj.kaikeba.example0602.stringMath;

import java.util.Random;

public class Test5 {
    /**
     * 生成一个随机100内小数,转换为保留两位小数的字符串,不考虑四舍五入的问题。
     * 用到的方法
     * substring​(int beginIndex, int endIndex) 指定下标截取字符串,返回一个字符串,该字符串是此字符串的子字符串。
     * int beginIndex : 起始下标
     * int endIndex: 终止下边
     * valueOf​(double d)   返回 double参数的字符串表示形式。
     */
    public static void main(String[] args) {
        Random random = new Random();
        double number = random.nextDouble() * 100;
        System.out.println("产生的随机数为:" + number);
        //将double类型转换为字符串类型
        String num = String.valueOf(number);
        //找到小数点所在的下标位置
        int index = num.indexOf(".",0);
        //终止位置为小数点所在下标后两位
        String num1 = num.substring(0,index + 3);
        System.out.println("转换后的随机数:" + num1);
    }
}

在这里插入图片描述

package com.zlj.kaikeba.example0602.stringMath;

import java.util.ArrayList;

public class Test6 {
    /**
     * 筛选字符串。
     *      定义ArrayList集合,存入多个字符串。
     *      长度大于5的字符串,打印删除后的集合。
     * 用到的方法    属于的类:ArrayList
     * add​(int index, E element) 将指定元素插入此列表中的指定位置
     * remove​(int index) 删除此列表中指定位置的元素
     * remove​(Object o) 从该列表中删除指定元素的第一个匹配项(如果存在)。
     * size() 返回此列表中的元素数
     * get​(int index) 返回此列表中指定位置的元素
     */
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        ArrayList<String> list2 = new ArrayList<>();
        list.add("asd");
        list.add("fewr");
        list.add("adafrwe");
        list.add("asds");
        list.add("adsfas");
        for (int i = 0; i < list.size(); i ++){
            //得到集合中第i个下标的元素
            String str = list.get(i);
            //判断该元素长度是否大于五,大于五删除
            if (str.length() > 5){
                list.remove(i);
            }
        }
        //打印删除后的集合
        for (int i = 0; i < list.size(); i ++){
            System.out.println(list.get(i));
        }
    }
}

在这里插入图片描述

package com.zlj.kaikeba.example0602.stringMath;

import java.util.Scanner;

public class Test7 {
    /**
     * 判断回文字符串。如果一个字符串,从前向后读和从后向前读,都是一个字符串,称为回文串,比如mom, dad,noon。
     */
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        String str = input.nextLine();
        //定义一个判断结果的boolean值
        boolean result = true;
        int start = 0;
        int end = str.length() - 1;
        while (start < end){
            if (str.charAt(start) == str.charAt(end)){
                start ++;
                end --;
                result = true;
            }else{
                result = false;
                break;
            }
        }
        System.out.println("该字符串是否为回文字符串?:" + result);
    }
}

在这里插入图片描述

package com.zlj.kaikeba.example0602.stringMath;

import java.util.Scanner;

public class Test8 {
    /**
     * 模拟简单计算器,
     * 可以运算+,—,*,/,%。
     * 接收三个参数,一个整数,一个运算符,另一个整数。
     * 计算出运算结果。 无法运算时,返回null。
     *
     */
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        Scanner input2 = new Scanner(System.in);
        System.out.println("请输入第一个整数:");
        int num1 = input.nextInt();
        System.out.println("请输入运算符:");
        String operator = input2.nextLine();
        System.out.println("请输入第二个整数:");
        int num2 = input.nextInt();
        String result = compute(num1,operator,num2);
        System.out.println("运算的结果为:" + result);
    }
    //用于运算
    public static String compute(int num1, String operator, int num2){
        int result = 0;
        switch (operator){
            case "+":
                result = num1 + num2;
                return result + "";
            case "-":
                result = num1 - num2;
                return result + "";
            case "*":
                result = num1 * num2;
                return result + "";
            case "/":
                result = num1 / num2;
                return result + "";
            case "%":
                result = num1 % num2;
                return result + "";
            default:
                return null;
        }
    }

}

在这里插入图片描述

package com.zlj.kaikeba.example0602.stringMath;

import java.util.Scanner;

public class Test9 {
    /**
     * 校验密码是否合法。 必须至少8个字符。 必须至少2个大写字符。 必须只有字母和数字
     * 利用ASCII码来判断两个必要条件
     */
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入你的密码:");
        String password = input.nextLine();
        System.out.println("你的密码是否合法?" + check(password));
    }
    public static boolean check(String pw){
        if (pw.length() < 8){
            return false;
        }
        int count = 0;
        for (int i = 0;i < pw.length(); i ++){
            //判断是否有至少两个大写字符
            if (pw.charAt(i) > 'A' && pw.charAt(i) < 'Z'){
                count ++;
            }
            //判断是否必须有字母和数字
            if ((pw.charAt(i) < 'A' || pw.charAt(i) > 'Z') && (pw.charAt(i) < '0' || pw.charAt(i) > '9') &&(pw.charAt(i) < 'a' || pw.charAt(i) > 'z')){
                return false;
            }
        }
        if (count < 2){
            return false;
        }
        return true;
    }
}

在这里插入图片描述

package com.zlj.kaikeba.example0602.stringMath;

public class User {
    private String userName;
    private String password;
    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;
    }

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

    public User() {
    }

}

package com.zlj.kaikeba.example0602.stringMath;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Test10 {
    /**
     * 模拟用户登录。
     *      定义用户类,属性为用户名和密码。
     *      使用集合存储多个用户对象。 录入用户和密码,
     *      对比用户信息,匹配成功登录成功,否则登录失败。
     *      登录失败时,当用户名错误,提示没有该用户。 登录失败时,当密码错误时,提示密码有误。
     *
     */
    public static void main(String[] args) {
        //使用集合存储用户名和密码
        ArrayList<User> list = new ArrayList<>();
        list.add(new User("zhao","123"));
        list.add(new User("long","456"));
        list.add(new User("ji","789"));
        Scanner input = new Scanner(System.in);
        System.out.println("请输入用户名:");
        String name = input.nextLine();
        System.out.println("请输入密码:");
        String password = input.nextLine();
        User user = new User(name,password);
        System.out.println(userLogin(user,list));
    }
    //用于登录,判断
    public static String userLogin(User user,ArrayList<User> list){
        //得到用户输入的用户名和密码
        String userName = user.getUserName();
        String password = user.getPassword();
        //循环遍历集合
        for (int i = 0; i < list.size(); i++){
            //将集合中的元素取出判断
            User user1 = list.get(i);
            String name1 = user1.getUserName();
            String pw = user1.getPassword();
            if (userName.equals(name1)){
                if (password.equals(pw)){
                    return "登录成功";
                }else {
                    return "密码有误";
                }
            }
        }
        return "没有该用户";
    }

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值