文章目录
一、 基础案例
1. 训练案例1
1.1. 训练描述:【toString方法】
一、 需求说明:定义一个学生类,属性有姓名name、年龄age,提供空参、满参构造方法,setXxx()与getXxx()方法,在测试类中创建学生对象并为其进行初始化,打印该对象名。
1.2. 操作步骤描述
- 创建Student类,该类中属性有姓名name、年龄age,提供空参、满参构造方法,setXxx()与getXxx()方法。
- 创建测试类,在测试类中创建学生对象,给对象成员赋值。
- 打印该对象名,发现打印结果是地址值,输出底层调用的是该对象的toString(),故而在Student类中重写toString()方法,打印该对象信息。
- 再次打印该对象名称,查看打印结果。
public class Main01 {
public static void main(String[] args) {
Student s = new Student("小明",26);
System.out.println(s);//day09.test01.Student@15db9742
//Student类中重写toString()方法后
System.out.println(s);
//Student [name=小明, age=26]
}
}
2. 训练案例2
2.1. 训练描述:【String类】
一、 需求说明:模拟登陆,给三次机会,并提示还有几次。
2.2. 操作步骤描述
- 定义两个字符串对象,用于存储已经存在的用户名和密码。
- 键盘录入用户名和密码
- 拿键盘录入的用户名和密码去跟已经存在的用户名和密码进行比较
如果内容相同,就提示登录成功
如果内容不同,就提示登录失败,并提示还有几次机会
import java.util.Scanner;
public class Three {
public static void main(String[] args) {
String userName = "lin";
String password = "123";
Scanner input = new Scanner(System.in);
for (int j = 3; j > 0; j--) {
System.out.println("请输入账号:");
String u = input.next();
System.out.println("请输入密码:");
String m = input.next();
if (u.equals(userName) && m.equals(m)) {
System.out.println("输入正确!");
break;
} else if(j==1){
System.out.println("次数用完,电脑即将爆炸!");
}else {
System.out.println("输入错误,你还剩余机会次数:" + (j-1));
}
}
}
}
3. 训练案例3
3.1. 训练描述:【String类】
一、 需求说明:把数组中的数据按照指定个格式拼接成一个字符串(用String类来实现)
举例:int[] arr = {1,2,3};
输出结果:[1, 2, 3]。
3.2. 操作步骤描述
- 定义一个int类型的数组
- 写方法实现把数组中的元素按照指定的格式拼接成一个字符串
- 调用方法
- 输出结果
public class String03 {
public static void main(String[] args) {
int[] arr = {1,2,3};
String a = toString(arr);
System.out.println(a);
}
private static String toString(int[] arr) {
String b = "[";
for (int i = 0; i < arr.length; i++) {
b += arr[i];
if(i<arr.length-1){
b +=",";
}else{
b +="]";
}
}
return b;
}
4. 训练案例4
4.1. 训练描述:【String类】
一、 需求说明:字符串反转(用String类来实现)
举例:键盘录入”abc”
输出结果:”cba”。
4.2. 操作步骤描述
- 键盘录入字符串数据
- 写方法实现字符串数据的反转
把字符串倒着遍历,在把每一个得到的字符拼接成一个字符串 - 调用方法
- 输出结果
public class String04 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("键盘录入字符串");
String a = (String) input.next();
String b = verString(a);
System.out.println(b);
}
private static String verString(String a) {
String c = "";
for (int i = a.length()-1; i >= 0; i--) {
c += a.charAt(i);
}
return c;
}
5. 训练案例5
5.1. 训练描述:【StringBuilder类】
一、 需求说明:把数组中的数据按照指定个格式拼接成一个字符串(用StringBuilder类来实现)
举例:int[] arr = {1,2,3};
输出结果:[1, 2, 3]。
5.2. 操作步骤描述
- 定义一个int类型的数组
- 写方法实现把数组中的元素按照指定的格式拼接成一个字符串
- 调用方法
- 输出结果
public class String05 {
public static void main(String[] args) {
int[] arr = {1,2,3};
StringBuilder a =new StringBuilder("[");
for (int i = 0; i < arr.length; i++) {
a.append(i);
a.append(",");
if(i==arr.length-1){
a.append("]");
}
}
System.out.println(a);
}
}
6. 训练案例6
6.1. 训练描述:【StringBuilder类】
一、 需求说明:字符串反转(用StringBuilder类来实现)
举例:键盘录入”abc”
输出结果:”cba”。
6.2. 操作步骤描述
- 键盘录入字符串数据
- 写方法实现字符串数据的反转
把字符串倒着遍历,在把每一个得到的字符拼接成一个字符串 - 调用方法
- 输出结果
public class String06 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("键盘录入字符串");
String a = (String) input.next();
StringBuilder sb = new StringBuilder(a);
StringBuilder b = verString(sb);
System.out.println(b);
}
private static StringBuilder verString(StringBuilder sb) {
StringBuilder c = sb.reverse();
return c;
}
}
二、 扩展案例
1. 训练案例1
1.1. 训练描述:【Scanner类、方法、String类】
一、 需求说明:实现用户注册、登陆功能;
- 程序中使用一个长度为3的对象数组,存储用户的登录名和密码:
例如如下格式:
登录名 密码 生日 爱好
zhangsan 1111 1998-03-15 旅游,唱歌
lisi 2222 2002-05-20 吃饭,睡觉,打豆豆
wangwu 3333 2001-07-28 看书,看电影,旅游
注册时,要判断数组是否已满,是:则禁止注册。 - 循环为用户列出菜单:
1.注册 2.登陆 3.退出 - 用户选择1,调用:registe()方法,执行注册流程;
用户选择2,调用:login()方法,执行登陆流程;
用户选择3,结束程序; - 编写方法:registe(),执行注册流程:
要求用户输入以下信息(信息无需校验):
用户名:
登录密码:
出生日期:
爱好:(多个爱好中间用逗号(中英文都可以)隔开) - 编写方法:login(),执行登陆流程:
请用户输入登录名、登陆密码;
使用登录名和密码进行验证;
通过:打印:这个用户的所有信息;
未通过:打印:用户名或密码错误!
//只能注册--登录
public class TZ01 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String name = null;
String password= null;
String birthday= null;
String love= null;
while (true) {
System.out.println("请选择功能(1~4):");
System.out.println("1.注册 2.登陆 3.退出");
int a = input.nextInt();
if (a == 1) {
String[] zu = registe();
name = zu[0];
password = zu[1];
birthday = zu[2];
love = zu[3];
System.out.println("注册成功!!");
} else if (a == 2) {
String[] deng = login();
if(deng[0].equals(name) & deng[1].equals(password) ){
System.out.println("登录成功!!");
System.out.println("注册账户:"+name);
System.out.println("登录密码:"+password);
System.out.println("生日:"+birthday);
System.out.println("爱好:"+love);
}else{
System.out.println("登录失败!!");
}
} else if (a == 3) {
System.out.println("退出成功!!");
break;
}else{
System.out.println("输入错误,请从新输入!");
}
}
}
private static String[] login() {
System.out.println("请输入注册名:");
Scanner input = new Scanner(System.in);
String name1 = input.next();
System.out.println("请输入密码:");
String password2 = input.next();
String[] deng = {name1,password2};
return deng;
}
private static String[] registe() {
System.out.println("请输入账号:");
Scanner input = new Scanner(System.in);
String name = input.next();
System.out.println("请输入密码:");
String password = input.next();
System.out.println("请输入出生日期(如1998-03-15):");
String birthday = input.next();
System.out.println("请输入爱好(多个爱好中间用逗号,中英文都可以)");
String love = input.next();
String[] zu = {name,password,birthday,love};
return zu;
}
}
2. 训练案例2
2.1. 训练描述:
分析以下需求,并用代码实现
1.键盘录入一个大字符串,再录入一个小字符串
2.统计小字符串在大字符串中出现的次数
3.代码运行打印格式:
请输入大字符串: woaiheima,heimabutongyubaima,wulunheimahaishibaima,zhaodaogongzuojiushihaoma
请输入小字符串:heima
控制台输出:小字符串heima,在大字符串woaiheima,heimabutongyubaima,wulunheimahaishibaima,zhaodaogongzuojiushihaoma中共出现3次
public class TZ02 {
public static void main(String[] args) {
System.out.println("录入一个大字符串:");
Scanner input = new Scanner(System.in);
String big = input.next();
System.out.println("录入一个小字符串:");
String litter = input.next();
System.out.println("小字符串"+litter+",在大字符串中共出现次数:"+sum(big,litter));
}
public static int sum(String big,String litter){
int sum = 0;
for (int i = 0; i < big.length(); i++) {
if(big.indexOf(litter,i) == i){
sum++;
}
}
return sum;
}
}
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
public class Tz03 {
public static void main(String[] args) {
System.out.println("请输入源字符串:");
Scanner input = new Scanner(System.in);
String scrStr = input.next();
System.out.println("请输入要删除的字符串:");
String delStr = input.next();
del(scrStr,delStr);
}
public static void del(String scr ,String del){
int sum = 0;
for (int i = 0; i < scr.length(); i++) {
if(scr.contains(del)){
scr =scr.replaceFirst(del, "");
sum++;
}
}
System.out.println("源字符串中总共包含:" + sum + " 个 " + del + " ,删除" + del + "后的字符串为: " + scr);
}
}