一、
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) : 根据传入的字符串作为规则, 切割当前字符串, 并返回字符串数组.
注意: 指定切割规则的时候, 如果没有按照预想的切割出数据
可以在规则前面, 加入 \\