一、Stringjoiner类
Stringjoiner类的构造方法
Stringjoiner类的成员方法
代码示例:
注意,一定要先导包: import java.util.StringJoiner;
package com.itbaima.exe03;
import java.util.StringJoiner;
public class stringjoiner {
public static void main(String[] args) {
StringJoiner sj=new StringJoiner(",","[","]");
sj.add("aaa").add("bbb").add("ccc");
System.out.println(sj);
System.out.println(sj.length());
}
}
总结:
stringjoiner适用于有开始结束符号和间隔符的字符串
二、练习------转换罗马数字
题目:
代码一:
package com.itbaima.exe03;
import java.util.Scanner;
import java.util.zip.CheckedInputStream;
public class 转换罗马字符串 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String str;
while (true){
System.out.println("请输入一个字符串");
str=sc.next();
//定义一个方法判断是否是符合要求一和要求二的字符串
boolean flag=checkstr(str);
if(flag){
break;
}
else{
System.out.println("你输入的字符串错误,请重新输入:");
}
}
//之后将内容变成罗马数字
//利用查表法进行转换
StringBuilder sb=new StringBuilder();
for (int i = 0; i < str.length(); i++) {
char c=str.charAt(i);
int number=c-48;
sb.append(luomachange(number));
}
System.out.println(sb);
}
public static String luomachange(int number){
String []arr={"","I ","II ","III ","IV ","V ","VI ","VII ","VIII ","IX "};
return arr[number];
}
public static boolean checkstr(String str){
if(str.length()>9){
return false;
}
for (int i = 0; i < str.length(); i++) {
char c=str.charAt(i);
if(c<'0'||c>'9'){
return false;
}
}
return true;
}
}
luomachange()利用查表法,将数字索引与数组中的元素绑在一起
需要拼接字符串时,不要用加号,要用stringbuilder的append()
代码二:
利用switch来代替查表法
package com.itbaima.exe03;
import java.util.Scanner;
public class 转换罗马字符串02 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String str;
while (true){
System.out.println("请输入一个字符串");
str=sc.next();
//定义一个方法判断是否是符合要求一和要求二的字符串
boolean flag=checkstr(str);
if(flag){
break;
}
else{
System.out.println("你输入的字符串错误,请重新输入:");
}
}
//之后将内容变成罗马数字
//利用查表法进行转换
StringBuilder sb=new StringBuilder();
for (int i = 0; i < str.length(); i++) {
char c=str.charAt(i);
sb.append(luomachange(c));
}
System.out.println(sb);
}
public static String luomachange(char number){
String str;
switch(number){
case '0'->str="";
case '1'->str="I ";
case '2'->str="II ";
case '3'->str="III ";
case '4'->str="IV ";
case '5'->str="V ";
case '6'->str="VI ";
case '7'->str="VII ";
case '8'->str="VIII";
case '9'->str="IX ";
default -> str="";
}
return str;
}
public static boolean checkstr(String str){
if(str.length()>9){
return false;
}
for (int i = 0; i < str.length(); i++) {
char c=str.charAt(i);
if(c<'0'||c>'9'){
return false;
}
}
return true;
}
}
三、练习-------调整字符串的内容并比较
题目:
代码:
package com.itbaima.exe03;
public class rotate {
public static void main(String[] args) {
String strA="abcde";
String strB="ABC";
boolean result=check(strA,strB);
System.out.println(result);
}
public static boolean check(String strA,String strB){
for (int i = 0; i <strA.length(); i++) {
strA=rotate(strA);
if(strA.equals(strB)){
return true;
}
}
return false;
}
public static String rotate(String strA){
char first=strA.charAt(0);
String end=strA.substring(1);
return end+first;
}
}
所谓字符串一旦定义后不能改变,指的是字符串中的内容不能改变,但是可以重新赋值.,整体改变