JavaSE第9天练习题(常用API,Scanner类 ,Object类,String类,StringBuilder类)

一、 基础案例

1. 训练案例1

1.1. 训练描述:【toString方法】
一、 需求说明:定义一个学生类,属性有姓名name、年龄age,提供空参、满参构造方法,setXxx()与getXxx()方法,在测试类中创建学生对象并为其进行初始化,打印该对象名。
1.2. 操作步骤描述

  1. 创建Student类,该类中属性有姓名name、年龄age,提供空参、满参构造方法,setXxx()与getXxx()方法。
  2. 创建测试类,在测试类中创建学生对象,给对象成员赋值。
  3. 打印该对象名,发现打印结果是地址值,输出底层调用的是该对象的toString(),故而在Student类中重写toString()方法,打印该对象信息。
  4. 再次打印该对象名称,查看打印结果。
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. 操作步骤描述

  1. 定义两个字符串对象,用于存储已经存在的用户名和密码。
  2. 键盘录入用户名和密码
  3. 拿键盘录入的用户名和密码去跟已经存在的用户名和密码进行比较
    如果内容相同,就提示登录成功
    如果内容不同,就提示登录失败,并提示还有几次机会
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. 操作步骤描述

  1. 定义一个int类型的数组
  2. 写方法实现把数组中的元素按照指定的格式拼接成一个字符串
  3. 调用方法
  4. 输出结果
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. 操作步骤描述

  1. 键盘录入字符串数据
  2. 写方法实现字符串数据的反转
    把字符串倒着遍历,在把每一个得到的字符拼接成一个字符串
  3. 调用方法
  4. 输出结果
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. 操作步骤描述

  1. 定义一个int类型的数组
  2. 写方法实现把数组中的元素按照指定的格式拼接成一个字符串
  3. 调用方法
  4. 输出结果
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. 操作步骤描述

  1. 键盘录入字符串数据
  2. 写方法实现字符串数据的反转
    把字符串倒着遍历,在把每一个得到的字符拼接成一个字符串
  3. 调用方法
  4. 输出结果
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类】
一、 需求说明:实现用户注册、登陆功能;

  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(),执行登陆流程:
    请用户输入登录名、登陆密码;
    使用登录名和密码进行验证;
    通过:打印:这个用户的所有信息;
    未通过:打印:用户名或密码错误!
//只能注册--登录
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次

扫描二维码关注公众号,回复: 9339873 查看本文章
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);
		
	}
}
发布了30 篇原创文章 · 获赞 10 · 访问量 887

猜你喜欢

转载自blog.csdn.net/weixin_45788152/article/details/104258735