day12Java学习笔记 Scanner、String详解

本文档详细介绍了Java编程的基础知识,包括Scanner类的使用方法、String类的各种功能及特性、字符串操作技巧等,并通过实例演示了如何实现用户登录验证及猜数字游戏。
摘要由CSDN通过智能技术生成

目录

1.Scanner的概述和构造方法原理:

2.Scanner的hasNextXXX()方法和nextInt()方法

3.获取数据出现的小问题

4.String类的概述

5.String类的构造方法

 6.String的特点一旦被赋值就不再改变

7.String字面值对象和构造方法创建对象的区别

8.String面试题

9.String类的判断功能

10.模拟用户登录

11. 10的断点测试

12. 用户登录案例之登陆成功后玩猜数字小游戏

13.断点测试

14.String类的获取功能

15.字符串的遍历

16.统计字符串中大写、小写、数字字符的个数

17.断点测试

18.String 类的转换功能

19.练习,把一个字符串首字母大写,其余小写

20.String的其他功能

21.20中的小问题

22.把int数组按指定格式拼接为字符串

23.使用功能改进22

24.字符串反转案例

25.大的字符串中找小字符串出现的次数

26.在大的字符串中查找小字符串出现的次数代码案例

27.26中代码的改进优化

28.断点测试

29.总结


1.Scanner的概述和构造方法原理:

这里sc对象使用的构造方法是Scanner(InputStream source)而system类中的静态成员变量就是inputStream类型的。所以构造方法使用是 Scanner sc = new Scanner(System.in);

2.Scanner的hasNextXXX()方法和nextInt()方法

3.获取数据出现的小问题

4.String类的概述

5.String类的构造方法

 

 

 6.String的特点一旦被赋值就不再改变

 字符串的值意思是,字符串被创建后,字符串本身不会发生改变,而指向它的某个对象,是可以改变的。

7.String字面值对象和构造方法创建对象的区别

 8.String面试题

 注意字符串中变量和常量相加在内存上的区别

 

9.String类的判断功能

 对于String s = ""; 对象s是存在的,内容为空,可以调用s的方法。

对于String s = null; 对象s是不存在的,对象为空,不能调用s的方法。

注意,对于对象不存在的时候却调用了方法,会出现空指针异常。

10.模拟用户登录

package cn.itcast_test;

import java.util.Scanner;

public class LoginTest {
    public static void main(String[] args) {
        //定义写死的账号的用户名和密码
        String username = "admin";
        String password = "123456";

        //要求最大允许的登录失败次数为3,循环次数明确,使用for循环。
        for (int i = 0; i < 3; i++) {
            
            //使用scanner获取用户输入的用户名和密码
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入用户名");
            String une = sc.nextLine();
            System.out.println("请输入密码");
            String pwd = sc.nextLine();
            
            //使用if,else语句判断字符串是否匹配
            if (une.equals(username) && pwd.equals(password)) {
                System.out.println("登陆成功");
                //登陆成功使用break跳出循环
                break;
            } else {
                //登陆失败时提示用户
                if (i == 2) {
                    //最后一次提示与前两次不同
                    System.out.println("您登录失败次数过多,已冻结。");
                } else {
                    //利用for循环中i的值来提示用户剩余可用的登录次数
                    System.out.println("登陆失败,您还有" + (2 - i) + "次机会。");
                }
            }
        }
    }
}

11. 10的断点测试

 在main左侧这里点一下使用debug模式调试就可以进行断点测试

12. 用户登录案例之登陆成功后玩猜数字小游戏

GuessNubmerGame类。

package cn.itcast_test;

import java.util.Scanner;

public class GuessNumberGame {
    private GuessNumberGame() {
    }

    public static void start() {
        //定义随机数1-100
        int number = (int) (Math.random() * 100 + 1);
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个数来猜数字(1-100)。");

        //猜数字的次数不明确,因此用while循环。
        //这里不必将创建scanner对象和游戏前的输出语句包含到while下
        //只将 int GN = sc.nextInt();包含进去即可
        while (true) {
            int GN = sc.nextInt();
            //判断
            if (GN > number) {
                System.out.println("您输入的数字过大,请重新输入。");
            } else if (GN < number) {
                System.out.println("您输入的数字过小,请重新输入。");
            } else {//若一致提示猜对了,使用break跳出循环,结束游戏。
                System.out.println("恭喜您,猜对了!");
                break;
            }
        }

    }
}

 LoginTest类。

package cn.itcast_test;

import java.util.Scanner;

public class LoginTest {
    public static void main(String[] args) {
        //定义写死的账号的用户名和密码
        String username = "admin";
        String password = "123456";

        //要求最大允许的登录失败次数为3,循环次数明确,使用for循环。
        for (int i = 0; i < 3; i++) {

            //使用scanner获取用户输入的用户名和密码
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入用户名");
            String une = sc.nextLine();
            System.out.println("请输入密码");
            String pwd = sc.nextLine();

            //使用if,else语句判断字符串是否匹配
            if (une.equals(username) && pwd.equals(password)) {
                System.out.println("登陆成功,您可以开始玩猜数字游戏了!");
                //登陆成功使用break跳出循环
                GuessNumberGame.start();
                break;
            } else {
                //登陆失败时提示用户
                if (i == 2) {
                    //最后一次提示与前两次不同
                    System.out.println("您登录失败次数过多,已冻结。");
                } else {
                    //利用for循环中i的值来提示用户剩余可用的登录次数
                    System.out.println("登陆失败,您还有" + (2 - i) + "次机会。");
                }
            }
        }
    }
}

13.断点测试

注意要在GuessNumberGame中的start方法也添加断点

14.String类的获取功能

 15.字符串的遍历

16.统计字符串中大写、小写、数字字符的个数

 

 17.断点测试

18.String 类的转换功能

19.练习,把一个字符串首字母大写,其余小写

 

使用链式编程优化

 20.String的其他功能

注意,使用比较时,是挨着比较,相同就看下一位,一旦有不同的字符,就用对应的 ASCII值相减,所以,返回值可能有负数、正数、0

21.20中的小问题

对于这种前三个字符一样但长度不一样的两个字符串使用比较方法,通过查看源码可知,当前几位字符相同,但长度不同时,直接返回了字符串长度相减。

22.把int数组按指定格式拼接为字符串

 

 23.使用功能改进22

 

 24.字符串反转案例

 

25.大的字符串中找小字符串出现的次数

 

 26.在大的字符串中查找小字符串出现的次数代码案例

package cn.itcast_test;

import java.lang.module.FindException;

public class minString_count {
    public static void main(String[] args) {
        String maxString = "woaijavawoaijavawohenaijavajavajava";
        String minString = "java";

        System.out.println(minString+"在"+maxString+"中出现了"+getCount(maxString,minString)+"次。");
    }

    public static int getCount(String maxstr,String minstr){

        int count = 0;
        int index = maxstr.indexOf(minstr);
        while(index!=-1){
            count++;
            maxstr = maxstr.substring(index+minstr.length());
            index = maxstr.indexOf(minstr);
        }
        return count;
    }
}

 27.26中代码的改进优化

注意:while中的index = maxstr.indexOf(minstr)要用括号括起来,执行顺序是,索引,赋值,判断。

public static int getCount(String maxstr,String minstr){

            int count = 0;
            int index ;
            while( (index=maxstr.indexOf(minstr)) != -1){
                count++;
                maxstr = maxstr.substring(index+minstr.length());
            }
            return count;
        }
    }

28.断点测试

29.总结

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孤尘Java

感谢认可!感谢您的打赏!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值