Java——JAVAString案例(用户登录、遍历字符串、统计字符次数、拼接字符串、字符串反转)

简介: Java——JAVAString案例(用户登录、遍历字符串、统计字符次数、拼接字符串、字符串反转)!

1. 案例:用户登录

需求:

已知用户名和密码,请用程序实现模拟用户登录,总共有三次机会,登录之后,给出相应的提示

分析:

(1)已知用户名和密码,定义两个字符串表示即可

(2)键盘录入要登陆的用户名和密码,用Scanner实现

(3)拿键盘录入的用户名、密码和已知的用户名、密码进行比较,给出相应的提示。字符串的内容比较,用equals()实现

(4)用循环实现多次机会,这里的次数明确,采用for循环实现,并在登录成功的时候,使用break结束循环

完整代码:

packageString;
importjava.util.Scanner;
publicclassStringDemo2 {
publicstaticvoidmain(String[] args) {
Stringusername="abc";
Stringpassword="123";
for(inti=0; i<3; i++){
Scannersc=newScanner(System.in);
System.out.println("请输入用户名:");
Stringname=sc.nextLine();
System.out.println("请输入密码:");
Stringpsd=sc.nextLine();
if(name.equals(username) &&psd.equals(password)){
System.out.println("登陆成功");
            }else{
if((3-i)==0){
System.out.println("登录失败");
                }else{
System.out.println("你还有"+(3-i)+"次机会");
                }
            }
        }
    }
}


运行结果:

请输入用户名:abc请输入密码:www你还有3次机会请输入用户名:abc请输入密码:sed你还有2次机会请输入用户名:abc请输入密码:123登陆成功


2. 案例:遍历字符串

需求:

键盘录入一个字符串,使用程序实现在控制台遍历该字符串

分析:

(1)键盘录入一个字符串,用Scanner实现

(2)遍历字符串,首先能够获取到字符串中的每一个字符

在这里插入图片描述

(3)遍历字符串,首先能够获取到字符串中的长度

在这里插入图片描述

(4)遍历字符串的通用格式

在这里插入图片描述


完整代码:

packageString;
importjava.util.Scanner;
publicclassString3 {
publicstaticvoidmain(String[] args) {
Scannersc=newScanner(System.in);
System.out.println("请输入一个字符串:");
Stringline=sc.nextLine();
for(inti=0; iSystem.out.println(line.charAt(i));
        }
    }
}


运行结果:

请输入一个字符串:ergegegergegeg


3. 案例:统计字符次数

需求:

键盘录入一个字符串,统计该字符串中大写字母字符、小写字母字符、数字字符出现的次数(不考虑其他字符)

分析:

(1)键盘录入一个字符串,用Scanner实现

(2)要统计三种类型的字符个数,需定义三个统计变量,初始值都为0

(3)遍历字符串,得到每一个字符

(4)判断该字符属于哪种类型,然后对应类型的统计变量+1

假如ch是一个字符:

大写字母:ch>='A'&&ch<='Z'

小写字母:ch>='a' && ch<='z'

数字:ch>='0' && ch<='9'

(5)输出三种类型的字符个数

完整代码:

packageString;
importjava.util.Scanner;
publicclassString4 {
publicstaticvoidmain(String[] args) {
Scannersc=newScanner(System.in);
System.out.println("请输入字符串:");
Stringline=sc.nextLine();
intbigCount=0;
intsmallCount=0;
intnumberCount=0;
for(inti=0; icharch=line.charAt(i);
if (ch>='A'&&ch<='Z'){
bigCount++;
            }elseif(ch>='a'&&ch<='z'){
smallCount++;
            }elseif(ch>='0'&&ch<='9'){
numberCount++;
            }
        }
System.out.println("大写字母:"+bigCount);
System.out.println("小写字母:"+smallCount);
System.out.println("数字:"+numberCount);
    }
}


运行结果:

请输入字符串:789595knjjninIIN大写字母:3小写字母:7数字:6


4. 案例:拼接字符串

需求:

在这里插入图片描述

分析:

(1)定义一个int类型的数组,用静态初始化完成数组元素的初始化

(2)定义一个方法,用于把int数组中的数据按照指定格式拼接成一个字符串返回,返回值类型String,参数列表int[] arr

(3)在方法中遍历数组,按照要求进行拼接

(4)调用方法,用一个变量接受结果

(5)输出结果

完整代码:

packageString;
publicclassString5 {
publicstaticvoidmain(String[] args) {
int[] arr= {1,2,3};
Stringc=reverse(arr);
System.out.println(c);
    }
publicstaticStringreverse(int[] arr){
Strings="";
s+="[";
for (inti=0; iif(i==arr.length-1){
s+=arr[i];
            }else{
s+=arr[i];
s+=", ";
            }
        }
s+="]";
returns;
    }
}


运行结果:

[1, 2, 3]


5. 案例:字符串反转

需求:

定义一个方法,实现字符串反转。键盘录入一个字符串,调用该方法后,在控制台输出结果。

如:键盘录入abc,输出结果cba

分析:

(1)键盘录入一个字符串,用Scanner实现;

(2)定义一个方法,实现字符串反转,返回值类型String,参数String s;

(3)在方法中把字符串看成遍历,然后把每一个得到的字符拼接成一个字符串并返回;

(4)调用方法,用一个变量接受结果;

(5)输出结果

完整代码:

packageString;
importjava.util.Scanner;
publicclassString6 {
publicstaticvoidmain(String[] args) {
Scannersc=newScanner(System.in);
System.out.println("请输入一个字符串:");
Stringline=sc.nextLine();
Strings=reverse(line);
System.out.println(s);
    }
/*明确:返回值类型:String;参数:String s*/publicstaticStringreverse(Strings){
Stringss=" ";
for(inti=s.length()-1; i>=0; i--){
ss+=s.charAt(i);
        }
returnss;
    }
}


运行结果:

请输入一个字符串:abccba


相关文章
|
28天前
|
SQL Java 索引
java小工具util系列2:字符串工具
java小工具util系列2:字符串工具
141 83
|
28天前
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
55 26
|
1月前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
53 8
|
1月前
|
缓存 算法 Java
本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制
在现代软件开发中,性能优化至关重要。本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制。通过调整垃圾回收器参数、优化堆大小与布局、使用对象池和缓存技术,开发者可显著提升应用性能和稳定性。
52 6
|
1月前
|
存储 Java 开发者
在 Java 中,如何遍历一个 Set 集合?
【10月更文挑战第30天】开发者可以根据具体的需求和代码风格选择合适的遍历方式。增强for循环简洁直观,适用于大多数简单的遍历场景;迭代器则更加灵活,可在遍历过程中进行更多复杂的操作;而Lambda表达式和`forEach`方法则提供了一种更简洁的函数式编程风格的遍历方式。
|
1月前
|
jenkins Java 测试技术
如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例详细说明
本文介绍了如何使用 Jenkins 自动发布 Java 代码,通过一个电商公司后端服务的实际案例,详细说明了从 Jenkins 安装配置到自动构建、测试和部署的全流程。文中还提供了一个 Jenkinsfile 示例,并分享了实践经验,强调了版本控制、自动化测试等关键点的重要性。
73 3
|
1天前
|
Java
Java—多线程实现生产消费者
本文介绍了多线程实现生产消费者模式的三个版本。Version1包含四个类:`Producer`(生产者)、`Consumer`(消费者)、`Resource`(公共资源)和`TestMain`(测试类)。通过`synchronized`和`wait/notify`机制控制线程同步,但存在多个生产者或消费者时可能出现多次生产和消费的问题。 Version2将`if`改为`while`,解决了多次生产和消费的问题,但仍可能因`notify()`随机唤醒线程而导致死锁。因此,引入了`notifyAll()`来唤醒所有等待线程,但这会带来性能问题。
Java—多线程实现生产消费者
|
3天前
|
安全 Java Kotlin
Java多线程——synchronized、volatile 保障可见性
Java多线程中,`synchronized` 和 `volatile` 关键字用于保障可见性。`synchronized` 保证原子性、可见性和有序性,通过锁机制确保线程安全;`volatile` 仅保证可见性和有序性,不保证原子性。代码示例展示了如何使用 `synchronized` 和 `volatile` 解决主线程无法感知子线程修改共享变量的问题。总结:`volatile` 确保不同线程对共享变量操作的可见性,使一个线程修改后,其他线程能立即看到最新值。
|
3天前
|
消息中间件 缓存 安全
Java多线程是什么
Java多线程简介:本文介绍了Java中常见的线程池类型,包括`newCachedThreadPool`(适用于短期异步任务)、`newFixedThreadPool`(适用于固定数量的长期任务)、`newScheduledThreadPool`(支持定时和周期性任务)以及`newSingleThreadExecutor`(保证任务顺序执行)。同时,文章还讲解了Java中的锁机制,如`synchronized`关键字、CAS操作及其实现方式,并详细描述了可重入锁`ReentrantLock`和读写锁`ReadWriteLock`的工作原理与应用场景。
|
3天前
|
安全 Java 编译器
深入理解Java中synchronized三种使用方式:助您写出线程安全的代码
`synchronized` 是 Java 中的关键字,用于实现线程同步,确保多个线程互斥访问共享资源。它通过内置的监视器锁机制,防止多个线程同时执行被 `synchronized` 修饰的方法或代码块。`synchronized` 可以修饰非静态方法、静态方法和代码块,分别锁定实例对象、类对象或指定的对象。其底层原理基于 JVM 的指令和对象的监视器,JDK 1.6 后引入了偏向锁、轻量级锁等优化措施,提高了性能。
19 3