1、 基础案例
1. 训练案例1
1.1. 训练描述:【toString方法】
1、 需求说明:定义一个学生类,属性有姓名name、年龄age,提供空参、满参构造方法,setXxx()与getXxx()方法,在测试类中创建学生对象并为其进行初始化,打印该对象名。
1.2. 操作步骤描述
1. 创建Student类,该类中属性有姓名name、年龄age,提供空参、满参构造方法,setXxx()与getXxx()方法。
2. 创建测试类,在测试类中创建学生对象,给对象成员赋值。
3. 打印该对象名,发现打印结果是地址值,输出底层调用的是该对象的toString(),故而在Student类中重写toString()方法,打印该对象信息。
4. 再次打印该对象名称,查看打印结果。
public class Student {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString(){
return name;
}
}
public class Test01 {
public static void main(String[] args) {
Student student = new Student("aaa",18);
System.out.println(student.getName());
System.out.println(student.toString());
}
}
2. 训练案例2
2.1. 训练描述:【String类】
1、 需求说明:模拟登陆,给三次机会,并提示还有几次。
2.2. 操作步骤描述
1. 定义两个字符串对象,用于存储已经存在的用户名和密码。
2. 键盘录入用户名和密码
3. 拿键盘录入的用户名和密码去跟已经存在的用户名和密码进行比较
如果内容相同,就提示登录成功
如果内容不同,就提示登录失败,并提示还有几次机会
public class Test02 {
public static void main(String[] args) {
String username = "admin";
String password = "123456";
for (int i = 3 ; i>=0; i--) {
Scanner scanner = new Scanner(System.in);
System.out.println("username");
String username1 = scanner.next();
System.out.println("password");
String password1 = scanner.next();
if (username.equals(username1) && password.equals(password1)) {
System.out.println("登录成功");
break;
} else {
if (i == 0) {
System.out.println("你的帐号被锁定,请与管理员联系");
} else {
System.out.println("提示登录失败,提示还有" + i + "次机会");
}
}
}
}
}
3. 训练案例3
3.1. 训练描述:【String类】
1、 需求说明:把数组中的数据按照指定个格式拼接成一个字符串(用String类来实现)
举例:int[] arr = {1,2,3};
输出结果:[1, 2, 3]。
3.2. 操作步骤描述
1. 定义一个int类型的数组
2. 写方法实现把数组中的元素按照指定的格式拼接成一个字符串
3. 调用方法
4. 输出结果
public class Test03 {
public static void main(String[] args) {
int[] arr = {1, 2, 3};
String a = arrayToString(arr);
System.out.println(a);
}
public static String arrayToString(int[] arr){
String s = "";
s += '[';
for (int i = 0; i < arr.length; i++) {
if (i != arr.length-1) {
s += arr[i];
s += ',';
} else {
s += arr[i];
}
}
s += ']';
return s;
}
}
4. 训练案例4
4.1. 训练描述:【String类】
1、 需求说明:字符串反转(用String类来实现)
举例:键盘录入”abc”
输出结果:”cba”。
4.2. 操作步骤描述
1. 键盘录入字符串数据
2. 写方法实现字符串数据的反转
把字符串倒着遍历,在把每一个得到的字符拼接成一个字符串
3. 调用方法
4. 输出结果
public class Test04 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("shuru");
String s = scanner.next();
String a = reverse(s);
System.out.println(a);
}
public static String reverse(String s) {
String a = "";
for (int i = s.length() - 1; i >= 0; i--) {
a += s.charAt(i);
}
return a;
}
}
5. 训练案例5
5.1. 训练描述:【StringBuilder类】
1、 需求说明:把数组中的数据按照指定个格式拼接成一个字符串(用StringBuilder类来实现)
举例:int[] arr = {1,2,3};
输出结果:[1, 2, 3]。
5.2. 操作步骤描述
1. 定义一个int类型的数组
2. 写方法实现把数组中的元素按照指定的格式拼接成一个字符串
3. 调用方法
4. 输出结果
public class Test05 {
public static void main(String[] args) {
//定义一个int类型的数组
int[] arr={1,2,3};
//写方法实现把数组中的元素按照指定的格式拼接成一个字符串
String s1 = arrayToString(arr); // 返回类型为string ,类型 变量 = 方法(参数)
//调用方法
//输出结果
System.out.println(s1);
}
/*
* 两个明确:
* 返回值类型:String
* 参数列表:int[] arr
*/
public static String arrayToString ( int[] arr){
StringBuffer s = new StringBuffer();
s.append("[");
for (int i = 0 ; i<arr.length;i++){
if ( i <= 1 ){
s.append(arr[i]).append(", "); // s.append().append()
}else {
s.append(arr[i]);
}
}
s.append(']');
String s1 = s.toString(); //把stringbuffer类型tostring为string类型的
return s1;
}
}
6. 训练案例6
6.1. 训练描述:【StringBuilder类】
1、 需求说明:字符串反转(用StringBuilder类来实现)
举例:键盘录入”abc”
输出结果:”cba”。
6.2. 操作步骤描述
1. 键盘录入字符串数据
2. 写方法实现字符串数据的反转
把字符串倒着遍历,在把每一个得到的字符拼接成一个字符串
3. 调用方法
4. 输出结果
/*
一、 需求说明:字符串反转(用StringBuilder类来实现)
举例:键盘录入”abc”
输出结果:”cba”。
public StringBuilder reverse():字符串本身进行反转
*/
public class Test06 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("shuru");
String a = scanner.next();
StringBuilder sb = new StringBuilder(a);
StringBuilder sb2 = sb.reverse();
System.out.println(sb2);
}
}
2、 扩展案例
1. 训练案例1
1.1. 训练描述:【Scanner类、方法、String类】
1、 需求说明:实现用户注册、登陆功能;
1. 程序中使用一个长度为3的对象数组,存储用户的登录名和密码:
例如如下格式:
登录名 密码 生日 爱好
zhangsan | 1111 | 1998-03-15 | 旅游,唱歌 |
lisi | 2222 | 2002-05-20 | 吃饭,睡觉,打豆豆 |
wangwu | 3333 | 2001-07-28 | 看书,看电影,旅游 |
注册时,要判断数组是否已满,是:则禁止注册。
2. 循环为用户列出菜单:
1.注册 2.登陆 3.退出
3. 用户选择1,调用:registe()方法,执行注册流程;
用户选择2,调用:login()方法,执行登陆流程;
用户选择3,结束程序;
4. 编写方法:registe(),执行注册流程:
● 要求用户输入以下信息(信息无需校验):
用户名:
登录密码:
出生日期:
爱好:(多个爱好中间用逗号(中英文都可以)隔开)
5. 编写方法:login(),执行登陆流程:
● 请用户输入登录名、登陆密码;
● 使用登录名和密码进行验证;
通过:打印:这个用户的所有信息;
未通过:打印:用户名或密码错误!
1.2. 操作步骤描述
略
public class Ansewer07 {
private static User[] userArray = new User[3];
private static int index = 0;// 当前数组可存储的位置,如果等于userArray.length -1,说明用户已满,禁止注册
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("1.注册 2.登陆 3.退出");
int op = sc.nextInt();
switch (op) {
case 1:
regist();
break;
case 2:
login();
break;
case 3:
System.out.println("谢谢使用,拜拜!");
System.exit(0);
default:
break;
}
}
}
// 注册
private static void regist() {
// 验证用户是否已满
if (index >= userArray.length) {
System.out.println("用户已满,禁止注册!");
return;
}
Scanner sc = new Scanner(System.in);
System.out.println("请输入用户名:");
String userName = sc.next().trim();
System.out.println("请输入登录密码:");
String pwd = sc.next().trim();
System.out.println("请输入确认密码:");
String birthDay = sc.next().trim();
System.out.println("请输入爱好(多个用逗号隔开):");
String hobby = sc.next().trim();
// 验证通过,写入到数组
User user = new User(userName, pwd, birthDay, hobby);
userArray[index] = user;
// 将索引增1,以备下一次存储
index++;
// 成功提示
System.out.println("注册成功!");
}
// 登录
private static void login() {
Scanner sc = new Scanner(System.in);
System.out.println("请输入登录名:");
String userName = sc.next();
System.out.println("请输入密码:");
String pwd = sc.next();
// 验证
for (int i = 0; i < userArray.length; i++) {
if (userName.equals(userArray[i].getUsername()) && pwd.equals(userArray[i].getPassword())) {
System.out.println("登录成功,以下是您的个人信息:");
System.out.println("用户名:" + userArray[i].getUsername() + " , 密码:" + userArray[i].getPassword() + " ,出生日期:" + userArray[i].getBrithday()
+ " ,爱好:" + userArray[i].getHobby());
return;
}else{System.out.println("登录失败,用户名或密码错误!");}
}
System.out.println("登录失败,用户名或密码错误!");
}
}
public class test07 {
public static User[] UserArry = new User[3];
public static int index = 0 ;
public static void main(String[] args) {
while (true) {
System.out.println("1.注册 2.登录 3.退出");
Scanner scanner = new Scanner(System.in);
int i = scanner.nextInt();
switch (i) {
case 1:
registe();
break;
case 2:
login();
break;
case 3:
break;
}
}
}
public static void registe(){
if(index >= UserArry.length) {
System.out.println("用户已满,停止注册");
return;
}
System.out.println("请输入用户名");
Scanner scanner1 = new Scanner(System.in);
String username = scanner1.next().trim();
System.out.println("请输入密码");
String password = scanner1.next().trim();
System.out.println("请输入生日");
String birthday= scanner1.next().trim();
System.out.println("请输入兴趣");
String hobby= scanner1.next().trim();
User user = new User(username, password, birthday, hobby);
UserArry[index] = user;
index++;
}
public static void login(){
System.out.println("请输入用户名");
Scanner scanner1 = new Scanner(System.in);
String username = scanner1.next().trim();
System.out.println("请输入密码");
String password = scanner1.next().trim();
for ( int i = 0 ; i < UserArry.length ; i++){
if( username.equals(UserArry[i].getUsername()) && password.equals(UserArry[i].getPassword())){
System.out.println("登录成功");
return;
}else {
System.out.println("输入有误");
return;
}
}
}
}
public class User {
String username;
String Password;
String Brithday;
String hobby;
public User(String username, String Password, String Brithday, String hobby) {
this.username = username;
this.Password = Password;
this.Brithday = Brithday;
this.hobby = hobby;
}
public User() {
}
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 String getBrithday() {
return Brithday;
}
public void setBirthDay(String Brithday) {
this.Brithday = Brithday;
}
public String getHobby() {
return hobby;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
}
2. 训练案例2
2.1. 训练描述:
分析以下需求,并用代码实现
1.键盘录入一个大字符串,再录入一个小字符串
2.统计小字符串在大字符串中出现的次数
3.代码运行打印格式:
请输入大字符串:woaiheima,heimabutongyubaima,wulunheimahaishibaima,zhaodaogongzuojiushihaoma
请输入小字符串:heima
控制台输出:小字符串heima,在大字符串woaiheima,heimabutongyubaima,wulunheimahaishibaima,zhaodaogongzuojiushihaoma中共出现3次
2.2. 操作步骤描述
略
public class Test08 {
public static void main(String[] args) {
String big = "bbbbba";
String small = "a";
getcount(big,small);
}
public static void getcount(String big, String small){
int count = 0;
for (int idex = 0 ; idex <big.length(); idex++) {
if (big.indexOf(small, idex) == -1) {
} else {
System.out.println(count);
count++;
}
}
}
}
3. 训练案例3
3.1. 训练描述:
分析以下需求,并用代码实现
1.键盘录入一个源字符串由字符串变量scrStr接收
2.键盘录入一个要删除的字符串由字符串变量delStr接收
3.要求
删除该字scrStr符串中的所有delStr字符串(最终的字符串中不能包含delStr),要求打印删除后的结果以及删除了几个delStr字符串
4.代码运行打印格式:
请输入源字符串:java woaijava,i like jajavava i enjoy java
请输入要删除的字符串:java
控制台输出结果:源字符串中总共包含:5 个java 删除java后的字符串为: woai,i like i enjoy
3.2. 操作步骤描述
略
4. 训练案例4
4.1. 训练描述:
分析以下需求,并用代码实现
1.键盘录入一个字符串
2.将该字符串变成字符数组(不能使用toCharArray()方法)
3.将字符数组中的所有大写字母变成小写字母(不能使用toLowerCase()方法)
4.如果第一位和最后一位的内容不相同,则交换
5.将字符数组中索引为偶数的元素变成'~'
6.打印数组元素的内容
4.2. 操作步骤描述
略
5. 训练案例5
5.1. 训练描述:
分析以下需求,并用代码实现
1.定义String getStr(char[] chs)方法
功能描述:获取长度为5的随机字符串,字符串由随机的4个大写英文字母和1个0-9之间(包含0和9)的整数组成
2.定义main方法,方法内完成:
(1)定义长度为26,元素值为26个大写英文字母的数组chs
(2)传递数组chs调用getStr(char[] chs)方法,获取返回值,并在控制台打印返回值
5.2. 操作步骤描述
略
6. 训练案例6
6.1. 训练描述
根据传入的字符串,获取指定的字符串
6.2. 操作步骤描述
1.定义如下方法public static String getPropertyGetMethodName(String property)
(1)该方法的参数为String类型,表示用户给定的成员变量的名字,返回值类型为String类型,返回值为成员变量对应的get方法的名字
(2)如:用户调用此方法时给定的参数为"name",该方法的返回值为"getName"
2.定义如下方法public static String getPropertySetMethodName(String property)
(1)该方法的参数为String类型,表示用户给定的成员变量的名字,返回值类型为String类型,返回值为成员变量对应的set方法的名字
(2)如:用户调用此方法时给定的参数为"name",该方法的返回值为"setName"
7. 训练案例7
7.1. 训练描述:
1、 需求说明:请用户输入一个“QQ号码”,我们来判断这个QQ号码是否正确。
要求:使用方法来完成判断功能。
7.2. 操作步骤描述
1. 建立MainApp类,并包含main()方法。
2. 在MainApp类中定义方法:checkQQ (String qq)
方法内实现验证。验证规则:
1) 必须是5—12位数字;
2) 首位不能是0;
3. 在main()方法中,请用户输入QQ号码
4. 调用checkQQ (String qq)方法进行判断,并打印判断结果。
8. 训练案例8
8.1. 训练描述:
1、 需求说明:定义如下字符串:
String str = “javajfiewjavajfiowfjavagkljjava”;
2、 请分别定义方法统计出:
1. 字符串中:字符j的数量
2. 字符串中:字符串java的数量
8.2. 操作步骤描述
1. 定义MainApp类,包含main()方法;
2. 在MainApp类中,定义以下两个方法:
1) 可以统计一个字符串中,某个字符出现的次数;
public static int countChar(String str,charc)
2) 可以统计一个字符串中,某个字符串出现的次数;
public static int countString(String str,String s)
3. 请实现方法,并在main()方法中分别调用这两个方法进行统计。