JAVA——字符串string的理论知识与相关习题
1、理论知识

创建String 对象的两种方法:

一般情况下建议使用第一种赋值方式,简单又简约内存
“==”比较的是什么?如下所示:


目前已经有设定好的方法,上面这个可以用于用户的密码验证;
下面这个可以用于验证码的验证

2、练习
(1)用户登录
解题思路:首先需要创建一个用户类,之后在测试类中先初始化一个对象,包括用户名和密码的属性。之后设置一个布尔值和一个计数值,使用while语句,只有当计数值<3并且布尔值为表示的数为true才执行while里边的代码。while里边先键盘输入用户名和密码,只有当用户名和密码都输入正确时,才输出登录正确的字样并且将布尔值设置为true,否则将显示登陆错误的字样并且计数值+1。之后再进行if语句,根据布尔值输出登录错误,已超过3次的字样。
代码如下:
用户类:
package com.xzhao.test.cat;
public class Admin {
private String name;
private String password;
public Admin() {
}
public Admin(String name, String password) {
this.name = name;
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
测试类:
package com.xzhao.test.cat;
import java.util.Scanner;
public class AdminTest {
public static void main(String[] args) {
Admin admin = new Admin();//初始化一个用户名和密码
admin.setName("admin");
admin.setPassword("123456");
Scanner sc = new Scanner(System.in);//键盘输入类
boolean flag = false;//设定一个布尔值的作用是当登录成功之后跳出循环
int count=0;//次数为0
while(count<3&&!flag){//只有当次数超过3次且flag为真时执行以下内容
System.out.println("请用户输入用户名:");//键盘输入用户名和密码
String name = sc.nextLine();
System.out.println("请用户输入密码:");
String password = sc.nextLine();
if(name.equals(admin.getName())&&password.equals(admin.getPassword())){
System.out.println("登录成功");
flag = true;
}
else{
System.out.println("用户名或密码错误");
count++;
}
}
if(!flag){
System.out.println("登录失败,3次错误");
}
}
}
结果如下:

(2)遍历字符串

理论知识:
解题思路:首先使用键盘输入的代码,之后使用for循环遍历输入的字符串并输出
代码如下:
package com.xzhao.test.cat;
import java.util.Scanner;
public class bianli {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串");
String a = sc.nextLine();//从键盘输入字符串,使用nextLine就算有空格,也会都输出;如果只有next遇到空格就当作输出
for(int i=0;i<a.length();i++){//对字符串进行遍历
System.out.println(a.charAt(i));//输出字符串中的每个字符
}
}
}
结果如下:
(3)统计字符次数

解题思路:在上边的基础上,加一个if语句,只要满足条件就数量加1
代码如下:
package com.xzhao.test.cat;
import java.util.Scanner;
public class bianli {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串");
String a = sc.nextLine();//从键盘输入字符串,使用nextLine就算有空格,也会都输出;如果只有next遇到空格就当作输出
int daxie=0;
int xiaoxie=0;
int shuzi=0;
for(int i=0;i<a.length();i++){
if(a.charAt(i)>='A'&&a.charAt(i)<='Z'){
daxie++;
}
else if(a.charAt(i)>='a'&&a.charAt(i)<='z'){
xiaoxie ++;
}
else if(a.charAt(i)>='0'&&a.charAt(i)<='9'){
shuzi++;
}
}
System.out.println("这个字符串中包含"+daxie+"个大写字母"+','+xiaoxie+"个小写字母"+','+shuzi+"个数字");
}
}
结果如下:
(4)拼接字符串

解题思路:之前说过类似的,这里不细说了
代码如下:
package com.xzhao.test.cat;
public class bianli {
public static void main(String[] args) {
int[] arr={1,2,3};//定义一个数组
String p=pinjie(arr);
System.out.println(p);
}
public static String pinjie(int[] a){
if(a.length!=0){
String str="[";
for(int i=0;i<a.length;i++){
if(i==a.length-1){
str+=a[i]+"]";
}else{
str+=a[i]+", ";
}
}
return str;//定义一个方法,用来拼接数组的内容
}
else{
return "[]";
}
}
}
结果如下:

(5)反转字符串

解题思路:新建一个方法,使用倒序,将数据进行输出,倒着去遍历,然后输出结果
代码如下:
package com.xzhao.test.cat;
import java.util.Scanner;
public class bianli {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入字符串:");
String str = sc.nextLine();
System.out.println("反转后的字符串为:");
fanzhuan(str);
}
public static String fanzhuan(String arr){
for (int i = arr.length()-1; i >= 0; i--) {
System.out.print(arr.charAt(i));
}
return arr;
}
结果如下:

(6)金额转换

解题思路:根据下面这个图可以一步步完善功能。先实现键盘输入一个数字————因为输入的范围是0-9999999,所以如果超出这个范围,直接提示输入不对,重新输入!——得到输入数字一共有几位之后,将数组中剩余的位置置0——之后建立一个方法将数字转换为大写汉字(我使用的是switch,视频作者是用新建了一个数组存放)——之后输出这个数组的汉字数组——之后再使用switch将数组中每个元素后分别加单位(譬如:元、拾、佰等)
代码如下:
package com.xzhao.test.cat;
import java.util.Scanner;
public class bianli {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n ;
while(true){//设置只有输入的金额正确才可以继续,否则一直重新输入!!!
System.out.println("请输入一个整数:");
n = sc.nextInt();
if(n>=0&&n<=9999999){
break;
}
else{
System.out.println("输入的整数不在0-9999999之间,请重新输入!");
}
}
String[] result = every(n);
if (result != null) {// 从高位到低位输出(数组倒序输出)
for (int i = result.length - 1; i >= 0; i--) {
switch (i){
case 0:result[i]+="元";
break;
case 1:result[i]+="拾";
break;
case 2:result[i]+="佰";
break;
case 3:result[i]+="仟";
break;
case 4:result[i]+="万";
break;
case 5:result[i]+="拾";
break;
case 6:result[i]+="佰";
break;
}
System.out.print(result[i]);
}
System.out.println(); // 换行
}
}
public static String[] every(int n){
int[] str=new int[7];//将输入的数字的每一位都提取出来
int count=0;
while (n > 0) {
for (int i = 0; i<str.length; i++) {
str[i] = n% 10;
n /= 10;
count++;
}
}
for(int i=6;i>=count;i--){//将剩余的数组位置用0填
str[i]=0;
}
String[] result=new String[7];
for(int i=0;i<7;i++){
switch (str[i]){
case 0:result[i]="零";
break;
case 1:result[i]="壹";
break;
case 2:result[i]="贰";
break;
case 3:result[i]="叁";
break;
case 4:result[i]="肆";
break;
case 5:result[i]="伍";
break;
case 6:result[i]="陆";
break;
case 7:result[i]="柒";
break;
case 8:result[i]="捌";
break;
case 9:result[i]="玖";
break;
}
}
return result;
}
}
结果如下:

(7)手机号屏蔽

解题思路:通过以上两个方法,使用的时候应该是 数组名.substring(a,b)/数组名.substring(a)
通过字符串拼接的方法实现
代码如下:
package com.xzhao.test.cat;
import java.util.Scanner;
public class bianli {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str;
while(true){
System.out.println("请输入你的手机号:");
str = sc.nextLine();
if(str.length()==11){
break;
}
else{
System.out.println("你输入的手机号格式有误,请重新输入!");
}
}
System.out.println(pingbi(str));
}
public static String pingbi(String s){
String s1=s.substring(0,3);
String s2="****";
String s3=s.substring(7);
return s1+s2+s3;
}
}
结果如下:

(8)身份信息查看

解题思路:同样使用上面的那个函数进行提取字符。在判断性别的时候,可以先用%2比较,偶数是女,奇数是男
代码如下:
Scanner sc = new Scanner(System.in);
String str;
while(true){
System.out.println("请输入你的身份证号:");
str = sc.nextLine();
if(str.length()==18){
break;
}
else{
System.out.println("身份证信息输入错误,重新输入!");
}
}
System.out.println("出生年月日:"+str.substring(6,10)+"年"+str.substring(10,12)+"月"+str.substring(12,14)+"日");
System.out.println("性别为:"+(str.charAt(16)%2==0?"女":"男"));
结果如下:

(9)敏感词替换



解题思路:新建一个敏感词库,把敏感词放在数组里边,之后进行循环,如果说的话里有敏感词就进行依次替换。
代码如下:
String str="你玩的真不错,以后别玩了,MD!";
String[] talk={"TMD","SB","MD"};//敏感词库
for(int i=0;i<talk.length;i++){//依次循环看是否存在敏感词
str=str.replace(talk[i],"***");
}
System.out.println(str);
结果如下:

理论知识:

更多推荐

所有评论(0)