目录
- 验证密码
- 字符串遍历
- 字符串拼接
- 字符串反转
- 字符串替换
- 金额转换
- 对称字符串
- 转换罗马数字
- 旋转字符串
验证密码
需求:已知正确用户名和密码,请用程序实现模拟用户登录。 总共给3次机会,登录之后,给出相对应的提示。
第一步:定义用户名和密码
// 1.定义正确的用户名和密码。
String rightUserName = "zhangsan";
String rightUserPassWord = "123456";
第二步:键盘输入用户名和密码
Scanner sc = new Scanner(System.in);
System.out.println("请输入用户名:");
String userName = sc.next();
第三步:判断用户名是否正确,正确就输入密码,错误就提示用户名错误
if(userName.equals(rightUserName)){
// 用户名存在
}else{
// 用户名不存在
System.out.println("您的用户名错误!");
}
第四步:验证密码
for (int i = 0; i < 3; i++) {
System.out.println("请输入密码:");
String userPasssWord = sc.next();
if(userPasssWord.equals(rightUserPassWord)){
System.out.println("登录成功!");
}else{
// 错误次数
}
}
第五步:添加计时器
// 当i=2时已经执行了3次,3次过后就锁定这个账户
if(i == 2){
System.out.println("您的用户名" + rightUserName + "已被锁定");
}else{
System.out.println("您的密码错误!还剩下" + (2 - i) + "次机会!");
}
我们来运行看一下吧:
我们来看一下完整代码吧:
// 1.定义正确的用户名和密码。
String rightUserName = "zhangsan";
String rightUserPassWord = "123456";
// 2.键盘输入用户名和密码
Scanner sc = new Scanner(System.in);
System.out.println("请输入用户名:");
String userName = sc.next();
if(userName.equals(rightUserName)){
for (int i = 0; i < 3; i++) {
System.out.println("请输入密码:");
String userPasssWord = sc.next();
if(userPasssWord.equals(rightUserPassWord)){
System.out.println("登录成功!");
}else{
// 当i=2时已经执行了3次,3次过后就锁定这个账户
if(i == 2){
System.out.println("您的用户名" + rightUserName + "已被锁定");
}else{
System.out.println("您的密码错误!还剩下" + (2 - i) + "次机会!");
}
}
}
}else{
System.out.println("您的用户名错误!");
}
字符串遍历
需求:键盘录入一个字符串,统计该字符串中大写字符和小写字母,数字字符出现的次数。
第一步:键盘录入一个字符串
// 1.键盘录入一个字符串
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String str = sc.next();
第二步:定义三个计数器用来统计个数
int bigcount = 0, smallCount = 0, numberCount = 0;
第三步:循环遍历每一个字符串的字符
for (int i = 0; i < str.length(); i++) {
// 3.遍历每个字符串的字符
char c = str.charAt(i);
// char类型的变量在参与计算的时候自动提升为int类型然后查询ASCII码表
if(c >= 'A' && c <= 'Z'){
bigcount++;
}else if(c >= 'a' && c <= 'z'){
smallCount++;
}else if(c >= '0' && c <= '9'){
numberCount++;
}
}
我们来运行看一下吧:
完整代码:
// 1.键盘录入一个字符串
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String str = sc.next();
// 2.定义三个计数器count用来统计出现重复的个数
int bigcount = 0, smallCount = 0, numberCount = 0;
for (int i = 0; i < str.length(); i++) {
// 3.遍历每个字符串的字符
char c = str.charAt(i);
// char类型的变量在参与计算的时候自动提升为int类型然后查询ASCII码表
if(c >= 'A' && c <= 'Z'){
bigcount++;
}else if(c >= 'a' && c <= 'z'){
smallCount++;
}else if(c >= '0' && c <= '9'){
numberCount++;
}
}
System.out.println("大写字母有:" + bigcount + "个" + "\n" + "小写字母有:" + smallCount + "个" + "\n" + "数字有:" + numberCount + "个" );
字符串拼接
需求:定义一个方法,把int数组中的数据按照指定的格式拼接成一个字符串返回。
调用该方法,并在控制台输出结果。例:数组为int[] arr={1,2,3,4,5};输出结果:[1,2,3,4,5]
第一步:定义一个数组字符串
int[] arr = {1,2,3,4,5};
第二步:定义一个方法用来拼接字符串并对传过来的数据做判断
public static String toString(int[] arr){
// 2.对传过来的数据做一些非空判断
if(arr == null){
return " ";
}
if(arr.length == 0){
return "[]";
}
}
第三步:循环遍历每个字符进行拼接
// 3.利用循环进行遍历每个字符进行拼接
for (int i = 0; i < arr.length; i++) {
if(i == arr.length -1){
resulr += arr[i];
}else{
resulr += arr[i] + ",";
}
}
我们来运行看一下:
完整代码:
public static void main(String[] args) {
int[] arr = {1,2,3,4,5};
System.out.println(toString(arr));
}
// 1.定义一个方法用来拼接字符串
public static String toString(int[] arr){
// 2.对传过来的数据做一些非空判断
if(arr == null){
return " ";
}
if(arr.length == 0){
return "[]";
}
// 3.定义一个字符串拼接左括号[
String resulr = "[";
// 4.利用循环进行遍历每个字符进行拼接
for (int i = 0; i < arr.length; i++) {
if(i == arr.length -1){
resulr += arr[i];
}else{
resulr += arr[i] + ",";
}
}
return resulr + "]";
}
字符串反转
需求:定义一个方法,实现字符串反转。键盘录入一个字符串,调用该方法,在控制台输出结果。
例如:输入abc,输出cba
第一步:键盘录入
// 1.键盘输入一个字符串
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String str = sc.next();
第二步:定义一个方法用来反转并拼接
// 2.定义一个方法用来反转
public static String rollbackstr(String str){
String result = "";
// 利用循环进行遍历每个字符进行拼接
for (int i = str.length() - 1; i >= 0; i--) {
char c = str.charAt(i);
// 3.用定义的字符串进行反转拼接
result += c;
}
return result;
}
第三步:调用方法进行反转
String result = rollbackstr(str);
System.out.println(result);
我们来运行看一下:
完整代码:
public static void main(String[] args) {
// 1.键盘输入一个字符串
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String str = sc.next();
// 4.调用方法进行反转输出
String result = rollbackstr(str);
System.out.println(result);
}
// 2.定义一个方法用来反转
public static String rollbackstr(String str){
String result = "";
// 利用循环进行遍历每个字符进行拼接
for (int i = str.length() - 1; i >= 0; i--) {
char c = str.charAt(i);
// 3.用定义的字符串进行反转拼接
result += c;
}
return result;
}
字符串替换
需求:定义一个数组存放敏感词,并对敏感词进行屏蔽输出
第一步:定义一个字符串
// 1.定义一个字符串
String str = "你玩的很好,以后不要在玩了,TMD,SB";
第二步:定义敏感词库
// 2.定义一个敏感词库
String[] arr = {"TMD","SB","CNM","MLGB"};
第三步:循环得到每个敏感词并替换
// 3.循环得到数组中的每一个敏感词进行替换
for (int i = 0; i < arr.length; i++) {
str = str.replace(arr[i],"***");
}
我们来运行看一下:
完整代码:
// 1.定义一个字符串
String str = "你玩的很好,以后不要在玩了,TMD,SB";
// 把里面的敏感词替换为星号
// 2.定义一个敏感词库
String[] arr = {"TMD","SB","CNM","MLGB"};
// 3.循环得到数组中的每一个敏感词进行替换
for (int i = 0; i < arr.length; i++) {
str = str.replace(arr[i],"***");
}
System.out.println(str);
金额转换
如下图所示:定义一个方法输入整数然后输出中文数字
第一步:键盘输入一个整数
// 1.键盘录入一个整数
Scanner sc = new Scanner(System.in);
int money;
第二步:对数字进行判断负数和范围。
// 2.对输入的数字进行判断
if(money >= 0 && money <= 9999999){
break;
}else{
System.out.println("金额无效,请重新输入!");
}
第三步:得到字符串里面的每一个数字
// 3.得到money里面的每一位数字,在转成中文
while (true) {
}
第四步:从右依次获取数据
// 3.1 从右往左获取数据,因为右侧是数据的个数
int ge = money % 10;
// 去掉刚刚获取的数据
money /= 10;
// 3.2 如果数字上的每一位全部获取到了,那么money记录的就是0,循环结束
if(money == 0){
break;
}
第五步:定义一个方法转换为中文数字
public static String getNumber(int number){
// 4.1 定义数组,让数字跟大写的中文产生一个对应。
String[] arr = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
// 返回结果 如果传过来的是1,就把number当索引找到索引为1的中文壹给你反回去。
return arr[number];
}
第六步:将输入的数字调用方法获取到对应的中文
// 5.将数字传递过去获取到大写
String capNumber = getNumber(ge);
第七步:定义一个字符串用来拼接中文数字
// 6. 定义一个字符串用来拼接钱的大写
String moneystr = "";
// 6.1 把转换之后的大写进行拼接到moneystr中
moneystr = capNumber + moneystr;
第八步:补齐剩余长度
// 7.在前面补0,补齐7位,7-moneystr的长度
int count = 7 - moneystr.length();
for (int i = 0; i < count; i++) {
moneystr = "零" + moneystr;
}
第九步:循环拼接每一个单位
// 8.插入单位,定义一个数组表示单位
String result = "";
String[] arr = {"佰","拾","万","仟","佰","拾","元"};
// 8.1 遍历moneystr,依次得到每一位。
for (int i = 0; i < moneystr.length(); i++) {
char c = moneystr.charAt(i);
// 8.2 把大写数字和单位拼接给result
result += c + arr[i];
}
我们来运行看一下:
完整代码:
public static void main(String[] args) {
// 1.键盘录入一个整数
Scanner sc = new Scanner(System.in);
int money;
while (true) {
System.out.println("请输入一个金额:");
money = sc.nextInt();
// 2.对输入的数字进行判断
if(money >= 0 && money <= 9999999){
break;
}else{
System.out.println("金额无效,请重新输入!");
}
}
// 6. 定义一个字符串用来拼接钱的大写
String moneystr = "";
// 3.得到money里面的每一位数字,在转成中文
while (true) {
// 3.1 从右往左获取数据,因为右侧是数据的个数
int ge = money % 10;
// 去掉刚刚获取的数据
money /= 10;
// 5.将数字传递过去获取到大写
String capNumber = getNumber(ge);
// 6.1 把转换之后的大写进行拼接到moneystr中
moneystr = capNumber + moneystr;
// 3.2 如果数字上的每一位全部获取到了,那么money记录的就是0,循环结束
if(money == 0){
break;
}
}
// 7.在前面补0,补齐7位,7-moneystr的长度
int count = 7 - moneystr.length();
for (int i = 0; i < count; i++) {
moneystr = "零" + moneystr;
}
// 8.插入单位,定义一个数组表示单位
String result = "";
String[] arr = {"佰","拾","万","仟","佰","拾","元"};
// 8.1 遍历moneystr,依次得到每一位。
for (int i = 0; i < moneystr.length(); i++) {
char c = moneystr.charAt(i);
// 8.2 把大写数字和单位拼接给result
result += c + arr[i];
}
System.out.println(result);
}
// 4.定义一个方法,把数字变成大写的中文
public static String getNumber(int number){
// 4.1 定义数组,让数字跟大写的中文产生一个对应。
String[] arr = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
// 返回结果 如果传过来的是1,就把number当索引找到索引为1的中文壹给你反回去。
return arr[number];
}
对称字符串
需求:键盘接收一个字符串,程序判断该字符是否是对称字符串,并在控制台打印是或者不是。 对称字符串:123321、111,非对称字符串:123123
第一步:键盘录入一个字符串
// 1.键录入一个字符串。
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String str = sc.next();
第二步:反转输入的字符串
// 2.反转键盘录入的字符串。
String result = new StringBuilder().append(str).reverse().toString();
第三步:比较是不是对称
// 3.比较字符串
if(str.equals(result)){
System.out.println("是");
}else{
System.out.println("不是");
}
运行看一下吧:
转换罗马数字
要求1:长度小于等于9。 要求2:只能是数字。
将内容变成罗马数字,下面是阿拉伯数字跟罗马数字的对比关系。
Ⅰ - 1,Ⅱ -2,Ⅲ-3 Ⅳ -4,Ⅴ -5,Ⅵ -6,Ⅶ -7,Ⅷ -8,Ⅸ -9。
注意:罗马数字数字没有0,如果键盘录入的数字包含0,可以变成""长度为0的字符串
第一步:键盘录入
// 1. 键盘录入
Scanner sc = new Scanner(System.in);
String str;
System.out.println("请输入一个字符串:");
str = sc.next();
第二步:定义一个方法判断字符串是否满足
// 2. 定义一个方法校验字符串是否满足要求
public static boolean checkStr(String str){
// 2.1 判断长度小于等于9
if(str.length() > 9){
return false;
}
// 2.2 只能是数字
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if(c < '0' || c > '9'){
return false;
}
}
// 放字符串的所有字符全部循环判断结束后才能符合规则,然后返回true。
return true;
}
第三步:调用方法校验
// 2.3 调用方法校验满足规则
boolean flag = checkStr(str);
if(flag){
break;
}else{
System.out.println("当前输入的字符串不符合规则,请重新输入");
continue;
}
第四步:定义查表法,用数组让罗马数字产生一个对应
// 3. 定义查表法,让数字跟数据产生一个对应关系
public static String changeLuoMa(int number){
// 定义一个数组,让索引跟罗马数字产生一个对应关系
String[] arr = {"","Ⅰ","Ⅱ","Ⅲ","Ⅳ","Ⅴ","Ⅵ","Ⅶ","Ⅷ","Ⅸ"};
return arr[number];
}
第五步:遍历字符串得到每一位数字
// 3.1 遍历每一个字符并调用方法得到罗马数字
// 利用StringJoiner将字符进行拼接
StringJoiner s1 = new StringJoiner(",");
for (int i = 0; i < str.length(); i++) {
// 遍历转为每个字符
char c = str.charAt(i);
// 得到字符后利用ASCII码表转为数字
int number = c - 48;
// 调用方法得到每一个对应的罗马数字
String s = changeLuoMa(number);
s1.add(s);
}
我们来运行看一下:
完整代码:
// 1. 键盘录入
Scanner sc = new Scanner(System.in);
String str;
while (true) {
System.out.println("请输入一个字符串:");
str = sc.next();
// 2.3 调用方法校验满足规则
boolean flag = checkStr(str);
if(flag){
break;
}else{
System.out.println("当前输入的字符串不符合规则,请重新输入");
continue;
}
}
// 3.1 遍历每一个字符并调用方法得到罗马数字
// 利用StringJoiner将字符进行拼接
StringJoiner s1 = new StringJoiner(",");
for (int i = 0; i < str.length(); i++) {
// 遍历转为每个字符
char c = str.charAt(i);
// 得到字符后利用ASCII码表转为数字
int number = c - 48;
// 调用方法得到每一个对应的罗马数字
String s = changeLuoMa(number);
s1.add(s);
}
System.out.println(s1);
}
// 2. 定义一个方法校验字符串是否满足要求
public static boolean checkStr(String str){
// 2.1 判断长度小于等于9
if(str.length() > 9){
return false;
}
// 2.2 只能是数字
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if(c < '0' || c > '9'){
return false;
}
}
// 放字符串的所有字符全部循环判断结束后才能符合规则,然后返回true。
return true;
}
// 3. 定义查表法,让数字跟数据产生一个对应关系
public static String changeLuoMa(int number){
// 定义一个数组,让索引跟罗马数字产生一个对应关系
String[] arr = {"","Ⅰ","Ⅱ","Ⅲ","Ⅳ","Ⅴ","Ⅵ","Ⅶ","Ⅷ","Ⅸ"};
return arr[number];
}
旋转字符串
要求:给定2个字符串A,B。A的旋转操作就是将A最左边的字符移到最右边。
例如:若A = 'abcde',在移动一次之后结果就是‘bcdea’。
如果在若干次调整操作之后,A能变成B,那么返回true,如果不能就返回false
第一步:定义两个字符串
// 1.定义两个字符串
String strA = "abcde";
String strB = "cdeab";
第二步:定义一个方法用来旋转字符串
// 2.定义一个方法用来旋转字符串,把左侧的字符串移动到右侧去。
public static String totate(String str){
// 截取思路:
// 获取最左侧的那个字符
char first = str.charAt(0);
// 获取剩余的字符
String end = str.substring(1);
return end + first;
// 变成数组思路:
char[] arr = str.toCharArray();
// 获取0索引上的字符
char first = arr[0];
// 获取剩余的字符依次往前挪一个位置
for (int i = 1; i < arr.length; i++) {
arr[i - 1] = arr[i];
}
// 把原来0索引上的字符放到最后一个索引
arr[arr.length - 1] = first;
// 利用字符数组创建一个字符串对象
String result = new String(arr);
return result;
}
第三步:调用旋转方法
public static boolean check(String strA,String strB){
for (int i = 0; i < strA.length(); i++) {
// 调用totate方法将strA的字符进行旋转
strA = totate(strA);
// 每旋转一次就拿strB比较,如果不一样就继续执行循环
if(strA.equals(strB)){
return true;
}
}
return false;
}
第四步:传值比较
boolean check = check(strA, strB);
我们来看一下完整代码吧:
public static void main(String[] args) {
// 1.定义两个字符串
String strA = "abcde";
String strB = "cdeab";
// 2.调用循环旋转方法 abcde -> bcdea -> cdeab -> deabc
boolean check = check(strA, strB);
System.out.println(check);
}
// 2.定义一个方法用来旋转字符串,把左侧的字符串移动到右侧去。
// 形参:旋转前的字符串
// 返回值:旋转后的字符串
public static String totate(String str){
// 如果我们看到要修改的字符串内容,可以有两个方法
// 1.用subString进行截取,把左边的字符截取出来拼接到右侧去。
// 2.可以把字符串变成一个字符数组,然后调整字符数组的数据,最后再把字符数组变成字符串
// 截取思路:
// 获取最左侧的那个字符
char first = str.charAt(0);
// 获取剩余的字符
String end = str.substring(1);
return end + first;
}
// 3.定义一个方法用来循环旋转字符串
public static boolean check(String strA,String strB){
for (int i = 0; i < strA.length(); i++) {
// 调用totate方法将strA的字符进行旋转
strA = totate(strA);
// 每旋转一次就拿strB比较,如果不一样就继续执行循环
if(strA.equals(strB)){
return true;
}
}
return false;
}
好啦,以上就是常用的字符串练习,有什么不懂的可以在评论区评论,我们下期不见不散哟!
==最后非常感谢您的阅读,也希望能得到您的反馈 ==