![]
package com.zlj.kaikeba.example0602.stringMath;
import java.util.Scanner;
public class Test1 {
public static void main(String[] args) {
//反转键盘录入的字符串。
Scanner input = new Scanner(System.in);
System.out.println("请输入一个字符串");
String string1 = input.nextLine();
StringBuffer stringBuffer = new StringBuffer(string1);
//Stringbuffer中的reverse()方法可以将字符序列反向替换
System.out.println(stringBuffer.reverse());
//接受被替代的字符串
String string2 = stringBuffer.reverse().toString();
}
}
结果
package com.zlj.kaikeba.example0602.stringMath;
import java.util.Scanner;
public class Test2 {
/**
* 键盘录入QQ号码,验证格式的正确性。
* 必须是5—12位数字。 0不能开头。
*/
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入你的QQ号码:");
String num = input.nextLine();
boolean correct = check(num);
System.out.println("你输入的QQ号码:" + correct);
}
//用于返回格式是否正确
public static boolean check(String num){
//判断是否在5-12位之间
if (num.length() < 5 || num.length() > 12){
return false;
}
//循环判断输入的是否是数字,以及中间是否含有数字之外的值,使用字符串的charat()方法,返回指定索引处的 char值进行判断。
for (int i = 0; i < num.length(); i ++){
//判断首位是否为0
if (num.charAt(0) == '0'){
return false;
}
//利用ASCII码来判断是否输入的是0-9之间的数字
if (num.charAt(i) < '0' || num.charAt(i) > '9'){
return false;
}
}
//如果上面都正确那么返回True
return true;
}
}
package com.zlj.kaikeba.example0602.stringMath;
import java.util.Scanner;
public class Test3 {
/**
* 字符串查找。
* 键盘录入一个大字符串,再录入一个小字符串。
* 统计小字符串在大字符串中出现的次数。
*/
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入大字符串:");
String big = input.nextLine();
System.out.println("请输入小字符串:");
String small = input.nextLine();
int time = count(big,small);
System.out.println("小字符串在大字符串中出现的次数为:" + time + "次");
}
public static int count(String bigString,String smallSring){
/**
* indexOf(String str, int fromIndex)
* string str:我们需要找的指定字符串
* int fromIndex:传入开始查找指定索引
* 从指定的索引处开始,返回指定子字符串第一次出现的字符串中的索引。没找到返回-1
*/
int index = 0;
int countNum = 0;
while (true){
index = bigString.indexOf(smallSring,index);
if (index != -1){
//index++是因为如果找到了第一次出现的索引,那么下次寻找我们就需要从第一次出现索引的下标开始寻找
index ++;
countNum ++;
}else {
break;
}
}
return countNum;
}
}
package com.zlj.kaikeba.example0602.stringMath;
import java.util.Scanner;
public class Test4 {
/**
* 替换某字符串中的某字符串。
* 键盘录入一个srcStr字符串,再录入一个delStr字符串。
* 删除该字srcStr符串中的所有delStr字符串。
* 例如: 输入srcStr:java woaijava,i like jajavava i enjoy java 输入delStr:java 输出: woai,i like i enjoy
* 用到的方法
* replace(char oldChar, char newChar), 返回从替换所有出现的一个字符串 oldChar在此替换为字符串 newChar 。
* char oldChar:需要被我们替换的字符
* char newChar:替换后的字符串
*/
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String srcStr = input.nextLine();
System.out.println("请输入你要替换的字符串:");
String delStr = input.nextLine();
String resStr = srcStr.replace(delStr,"");
System.out.println(resStr);
}
}
package com.zlj.kaikeba.example0602.stringMath;
import java.util.Random;
public class Test5 {
/**
* 生成一个随机100内小数,转换为保留两位小数的字符串,不考虑四舍五入的问题。
* 用到的方法
* substring(int beginIndex, int endIndex) 指定下标截取字符串,返回一个字符串,该字符串是此字符串的子字符串。
* int beginIndex : 起始下标
* int endIndex: 终止下边
* valueOf(double d) 返回 double参数的字符串表示形式。
*/
public static void main(String[] args) {
Random random = new Random();
double number = random.nextDouble() * 100;
System.out.println("产生的随机数为:" + number);
//将double类型转换为字符串类型
String num = String.valueOf(number);
//找到小数点所在的下标位置
int index = num.indexOf(".",0);
//终止位置为小数点所在下标后两位
String num1 = num.substring(0,index + 3);
System.out.println("转换后的随机数:" + num1);
}
}
package com.zlj.kaikeba.example0602.stringMath;
import java.util.ArrayList;
public class Test6 {
/**
* 筛选字符串。
* 定义ArrayList集合,存入多个字符串。
* 长度大于5的字符串,打印删除后的集合。
* 用到的方法 属于的类:ArrayList
* add(int index, E element) 将指定元素插入此列表中的指定位置
* remove(int index) 删除此列表中指定位置的元素
* remove(Object o) 从该列表中删除指定元素的第一个匹配项(如果存在)。
* size() 返回此列表中的元素数
* get(int index) 返回此列表中指定位置的元素
*/
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
ArrayList<String> list2 = new ArrayList<>();
list.add("asd");
list.add("fewr");
list.add("adafrwe");
list.add("asds");
list.add("adsfas");
for (int i = 0; i < list.size(); i ++){
//得到集合中第i个下标的元素
String str = list.get(i);
//判断该元素长度是否大于五,大于五删除
if (str.length() > 5){
list.remove(i);
}
}
//打印删除后的集合
for (int i = 0; i < list.size(); i ++){
System.out.println(list.get(i));
}
}
}
package com.zlj.kaikeba.example0602.stringMath;
import java.util.Scanner;
public class Test7 {
/**
* 判断回文字符串。如果一个字符串,从前向后读和从后向前读,都是一个字符串,称为回文串,比如mom, dad,noon。
*/
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String str = input.nextLine();
//定义一个判断结果的boolean值
boolean result = true;
int start = 0;
int end = str.length() - 1;
while (start < end){
if (str.charAt(start) == str.charAt(end)){
start ++;
end --;
result = true;
}else{
result = false;
break;
}
}
System.out.println("该字符串是否为回文字符串?:" + result);
}
}
package com.zlj.kaikeba.example0602.stringMath;
import java.util.Scanner;
public class Test8 {
/**
* 模拟简单计算器,
* 可以运算+,—,*,/,%。
* 接收三个参数,一个整数,一个运算符,另一个整数。
* 计算出运算结果。 无法运算时,返回null。
*
*/
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Scanner input2 = new Scanner(System.in);
System.out.println("请输入第一个整数:");
int num1 = input.nextInt();
System.out.println("请输入运算符:");
String operator = input2.nextLine();
System.out.println("请输入第二个整数:");
int num2 = input.nextInt();
String result = compute(num1,operator,num2);
System.out.println("运算的结果为:" + result);
}
//用于运算
public static String compute(int num1, String operator, int num2){
int result = 0;
switch (operator){
case "+":
result = num1 + num2;
return result + "";
case "-":
result = num1 - num2;
return result + "";
case "*":
result = num1 * num2;
return result + "";
case "/":
result = num1 / num2;
return result + "";
case "%":
result = num1 % num2;
return result + "";
default:
return null;
}
}
}
package com.zlj.kaikeba.example0602.stringMath;
import java.util.Scanner;
public class Test9 {
/**
* 校验密码是否合法。 必须至少8个字符。 必须至少2个大写字符。 必须只有字母和数字
* 利用ASCII码来判断两个必要条件
*/
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入你的密码:");
String password = input.nextLine();
System.out.println("你的密码是否合法?" + check(password));
}
public static boolean check(String pw){
if (pw.length() < 8){
return false;
}
int count = 0;
for (int i = 0;i < pw.length(); i ++){
//判断是否有至少两个大写字符
if (pw.charAt(i) > 'A' && pw.charAt(i) < 'Z'){
count ++;
}
//判断是否必须有字母和数字
if ((pw.charAt(i) < 'A' || pw.charAt(i) > 'Z') && (pw.charAt(i) < '0' || pw.charAt(i) > '9') &&(pw.charAt(i) < 'a' || pw.charAt(i) > 'z')){
return false;
}
}
if (count < 2){
return false;
}
return true;
}
}
package com.zlj.kaikeba.example0602.stringMath;
public class User {
private String userName;
private String password;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public User(String userName, String password) {
this.userName = userName;
this.password = password;
}
public User() {
}
}
package com.zlj.kaikeba.example0602.stringMath;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Test10 {
/**
* 模拟用户登录。
* 定义用户类,属性为用户名和密码。
* 使用集合存储多个用户对象。 录入用户和密码,
* 对比用户信息,匹配成功登录成功,否则登录失败。
* 登录失败时,当用户名错误,提示没有该用户。 登录失败时,当密码错误时,提示密码有误。
*
*/
public static void main(String[] args) {
//使用集合存储用户名和密码
ArrayList<User> list = new ArrayList<>();
list.add(new User("zhao","123"));
list.add(new User("long","456"));
list.add(new User("ji","789"));
Scanner input = new Scanner(System.in);
System.out.println("请输入用户名:");
String name = input.nextLine();
System.out.println("请输入密码:");
String password = input.nextLine();
User user = new User(name,password);
System.out.println(userLogin(user,list));
}
//用于登录,判断
public static String userLogin(User user,ArrayList<User> list){
//得到用户输入的用户名和密码
String userName = user.getUserName();
String password = user.getPassword();
//循环遍历集合
for (int i = 0; i < list.size(); i++){
//将集合中的元素取出判断
User user1 = list.get(i);
String name1 = user1.getUserName();
String pw = user1.getPassword();
if (userName.equals(name1)){
if (password.equals(pw)){
return "登录成功";
}else {
return "密码有误";
}
}
}
return "没有该用户";
}
}