20230329——java-String-day08

一、

1、

package com.wanxi;
//需求:已知用户名和密码,请用程序实现模拟用户登录。总共给5次机会,登录之后,给出相应的提示
public class UserLogin {
    public static void main(String[] args) {
        String userName = "陈明";
        String password = "11111111";
        
        System.out.println("你共有5次机会");
        int time = 5;

        for (int i = 1; i <= 5; i++) {

            String theUserName = Util.getString("请输入用户名: ");
            String thePassword = Util.getString("请输入登录密码: ");

            if (userName.equals(theUserName) && password.equals(thePassword)) {
                System.out.println("输入正确,欢迎光临");
                break;
            }

            time--;

            if (time != 0) {
                System.out.println("请重新输入,你还有的机会次数为: " + time);
            }
            if (time == 0) {
                System.out.println("次数用完了哦,你的账号冻结了");
            }

        }

    }

}

2、

package com.wanxi;
//需求:键盘录入一个字符串,使用程序实现在控制台遍历该字符串
public class RunString {
    public static void main(String[] args) {

        String text = Util.getString("请输入一个字符串: ");

        for (int i = 0; i < text.length(); i++) {
            System.out.print(text.charAt(i) + " ");

        }
    }
}

3、

package com.wanxi;
//需求:键盘录入一个字符串,使用程序实现在控制台遍历该字符串
public class StringToCharArray {
    public static void main(String[] args) {

        String text = Util.getString("请输入一个字符串: ");

        char[] textArray = text.toCharArray();


        for (int i = 0; i < textArray.length; i++) {

            System.out.print(textArray[i] + " ");

        }
    }
}

4、

package com.wanxi;
需求:键盘录入一个字符串,统计该字符串中大写字母字符,小写字母字符,数字字符出现的次数(不考虑其他字符)
public class CountTime {
    public static void main(String[] args) {

        String text = Util.getString("请输入一个字符串: ");

        int bigTime = 0;
        int smallTime = 0;
        int numberTime = 0;

        for (int i = 0; i < text.length(); i++) {

            if (text.charAt(i) >= 'A' && text.charAt(i) <= 'Z') {
                bigTime++;
            }

            if (text.charAt(i) >= 'a' && text.charAt(i) <= 'z') {
                smallTime++;
            }
            if (text.charAt(i) >= '0' && text.charAt(i) <= '9') {
                numberTime++;
            }


        }

        Util.print("大写字母的个数为:{1},小写字母的个数为:{2},数字的个数为:{3}", bigTime, smallTime, numberTime);


    }
}

5、

package com.wanxi;
//需求:键盘录入一个 字符串,如果字符串中包含(TMD),则使用***替换
public class SensitiveReplace {
    public static void main(String[] args) {

        String text = Util.getString("请输入一个字符串: ");

        String newText = text.replaceAll("你妈的","***");
        System.out.println(newText);
        
    }
}

6、

(1)

package com.wanxi;
//需求:以字符串的形式从键盘录入学生信息,例如:“张三 , 23”从该字符串中切割出有效数据
//封装为Student学生对象
public class TestStudent {
    public static void main(String[] args) {

        String studentText = Util.getString("请输入一个姓名,年龄: ");

        String[] studentInformation = studentText.split(",");

        Student student = new Student(studentInformation[0], studentInformation[1]);

        Util.print("学生姓名为: {1},年龄为: {2}", student.getName(), student.getAge());


    }
}

(2)

package com.wanxi;

public class Student {
    private String name;
    private String age;

    public Student(String name, String age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

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

    public String getAge() {
        return age;
    }

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

7、

package com.wanxi;
// 完成对字母的统计,每个字母出现的次数都要单独分开统计。
public class CountTheTimes {
    public static void main(String[] args) {

        String text = Util.getString("请输入一个字符串: ");

        String compare = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

        int time = 0;

        for (int i = 0; i < compare.length(); i++) {

            for (int j = 0; j < text.length(); j++) {

                if (text.charAt(j) == compare.charAt(i)) {
                    time++;
                }
            }

            Util.print("字母为: {1},次数为: {2}", compare.charAt(i), time);
            time = 0;

        }

    }
}

8、

package com.wanxi;
//请使用今天学习的知识,完成email 邮箱格式的验证。不准使用正则表达式。
public class JudgeEmail {
    public static void main(String[] args) {

        String email = Util.getString("请输入邮箱地址: ");

        int time = 0;

        for (int i = 1; i < email.length() - 1; i++) {
            if (email.charAt(0) != '@' && email.charAt(i) == '@' && email.charAt(email.length() - 1) != '@') {
                time++;
            }
        }

        if (time == 1) {
            System.out.println("你的邮箱地址,输入正常");
            return;
        }
        System.out.println("你的邮箱地址,输入错误");
        
    }
}

9、

package com.wanxi;;
// 4. 完成电话号码的格式验证。手机号码,座机号码 xxxxx xxxxx 13000000:手机和座机;只验证是不是11位和7位。并且全是数字。
// 要求:位数的获取,不允许使用字符串的length方法。
public class JudgePhoneNumber {
    public static void main(String[] args) {

        String mobileNumber = Util.getString("请输入一个手机号: ");
        String officeNumber = Util.getString("请输入一个座机号: ");

        int mobileNumberTime = 0;
        int mobileElseTime = 0;
        int officeNumberTime = 0;
        int officeElseTime = 0;

        for (int i = 0; i < mobileNumber.length(); i++) {

            if (mobileNumber.charAt(i) >= '0' && mobileNumber.charAt(i) <= '9') {
                mobileNumberTime++;
            } else {
                mobileElseTime++;
            }
        }

        for (int i = 0; i < officeNumber.length(); i++) {
            if (officeNumber.charAt(i) >= '0' && officeNumber.charAt(i) <= '9') {
                officeNumberTime++;
            } else {
                officeElseTime++;
            }
        }

        if (mobileElseTime == 0 && officeElseTime == 0 && mobileNumberTime == 11 && officeNumberTime == 7) {
            Util.print("你输入的号码正常,输入的手机号码为: {1},输入的座机号码为: {2}", mobileNumber, officeNumber);
            return;
        }
        System.out.println("你输入的号码有误");

    }
}

01-API介绍

  • 介绍 : API 应用程序编程接口

    • 简单记 : 就是别人已经写好的代码

  • 学习别人已经写好的代码, 使用的是 API 帮助文档

  • 帮助文档的使用流程 :

API帮助文档的使用流程 :

    1. 在索引的位置搜索自己要查看的类
            - 思考: 我怎么知道, 自己要看哪一个类?
            - 回答: 开发中常用的类, 在课程中都会讲解到
            
    2. 看该类所在的包
            - 目标: 看这个包是不是 java.lang (核心包)
                        是 : 使用的时候不需要导包 
                        不是 : 使用的时候必须要编写导包代码
                        
    3. 看该类的介绍
            - 目标: 明确出这个类的作用
            
    4. 看该类的构造方法
            - 目标: 能够根据构造方法, 创建出该类的对象
            
    5. 看该类的成员方法
            - 1. 方法名
            - 2. 方法的参数
            - 3. 方法的返回值
            - 4. 方法的介绍

02-String类的特点

1. Java程序中, 所有双引号字符串, 都是String这个类的对象
        - String类, 多了一种创建对象的方式

    
2. String字符串, 一旦被创建, 就[不可改变]
        - 不可改变: 字符串内容不能改变, 要想做修改, 只能使用新的对象做替换.

            String s = "abc";
            s = "def";
            System.out.println(s);        // def

3. 字符串虽然不可改变, 但是其内容可以被共享

        - 字符串常量池: 当使用双引号创建字符串对象的时候, 会检查常量池中是否存在该数据
                        没有 : 创建
                        有 : 复用
                            
                            String s1 = "abc";
                            String s2 = "abc";
                            System.out.println(s1 == s2);  // true

4. 字符串和字符数组之间允许相互转换

            char[] chs = {'a','b','c'};     <----------->    String s = "abc";

            1. 字符串数组转换字符串
                
                String s = new String(chs);

            2. 字符串拆分为字符数组
                
                char[] chs = s.toCharArray();

03-String类常见的构造方法

1. public String() : 创建一个空白的字符串对象
2. public String(char[] chs) : 根据传入的字符数组, 来创建字符串对象
3. public String(String s) : 根据传入的字符串, 来创建字符串对象

细节: 打印字符串对象, 为什么没有地址值?
      - TODO: 就业班 (继承, 方法重写, Object, toString())
      - 请先暂时记住, 打印字符串对象名, 直接展示内容, 并非地址值.

想法: 这三种创建方式, 都没有双引号直接创建, 来的方便

        String s = "abc";

3.1 创建字符串对象, 两种方式的区别

  • 双引号直接创建 : 在字符串常量池中维护

  • 通过构造方法 new 出来 : 在堆内存中有自己独立的内存地址

04-String类成员方法

  • 字符串中用于比较的方法 :

public boolean equals(String anObject) : 字符串之间进行内容的比较, 返回true, false
public boolean equalsIgnoreCase(String anotherString) : 字符串之间进行内容的比较, 返回true, false (不考虑大小写)
  • 字符串转字符数组的方法 :

public char[] toCharArray() : 将此字符串转换为一个新的字符数组
  • 字符串用于遍历方法 :

public char charAt(int index) : 根据索引找字符
public int length() : 返回字符串的长度(字符的个数)
  • 字符串用于截取方法 :

public String substring(int beginIndex) : 根据传入的索引, 截取字符串, 截取到字符串的末尾, 返回新的字符串
public String substring(int beginIndex, int endIndex)  : 
                            根据传入的开始和结束索引, 截取字符串 (包含头, 不包含尾), 返回新的字符串
  • 字符串用于替换方法 :

public String replace(String target, String replacement)  :
​
                            参数1: 旧值
                            参数2: 新值
  • 字符串用于切割的方法 :

public String[] split(String regex) : 根据传入的字符串作为规则, 切割当前字符串, 并返回字符串数组.

            注意: 指定切割规则的时候, 如果没有按照预想的切割出数据
                    可以在规则前面, 加入 \\

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值