JAVA——stringbuilder的理论知识、stringjoiner知识以及字符串的一些方法和习题等
1、定义

2、构造方法

3、常用方法


反转是直接在容器内部反转,不是像字符串那样,得返回值才行
下面是将stringbuilder变为string的过程:

之后就可以用string的各种方法了!
4、链式编程:
5、对称字符串

解题思路:直接使用链式编程将stringbuilder的方法进行组合即可
代码如下:
Scanner sc = new Scanner(System.in);
System.out.println("请输入字符串:");
String str = sc.nextLine();
String sb = new StringBuilder(str).reverse().toString();
if(str.equals(sb)){
System.out.println("是对称字符串");
}
else{
System.out.println("不是对称字符串");
}
结果如下:

6、拼接字符串


7、stringjoiner




8、字符串原理



以上两个的区别主要在于==右边有没有变量出现,有就不是串池,没有就是!!!

9、转换罗马数字

解题思路:首先根据题目键盘输入一个字符串,之后建立一个方法,用于判断输入的字符串是否满足标准(1、长度<=9 2、只能是数字);定义一个布尔值,只有满足条件才返回true,否则是false,一直输入新的字符串。之后再建立一个方法用于转换字符串中的数字为罗马数字,采用查表法,建立一个数组,传入数字之后进行替换。
代码如下:
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("请输入长度小于等于9的字符串:");
String s;
while(true){
s=sc.nextLine();
boolean flag=biaozhun(s);
if(flag){
break;
}
else{
System.out.println("你输入的格式有误,请重新输入!");
}
}
StringBuilder sb=new StringBuilder();
for(int i=0;i<s.length();i++){
char c=s.charAt(i);//取得是字符,不是数字
int number=c-'0';//将字符转换为数字
String s1=chang(number);//定义一个新字符串用于存放转换后的字符串
sb.append(s1);//进行拼接
}
System.out.println(sb);
}
public static String chang(int n){//查表法:将数字转换为罗马数字
String[] str={" ","Ⅰ","Ⅱ","Ⅲ","Ⅳ","Ⅴ","Ⅵ","Ⅶ","Ⅷ","Ⅸ"};
return str[n];
}
public static boolean biaozhun(String ss){//判断输入的字符串是否满足条件
if(ss.length()>9){//条件1:长度小于等于9
return false;
}
else {
for(int i=0;i<ss.length();i++){
if(ss.charAt(i)<'0'||ss.charAt(i)>'9'){//条件2:只能是是数字
return false;
}
}
}
return true;
}
}
结果如下:

(10)调整字符串

解题思路:这里采用的方法是裁剪,substring,每次都是把字符串第一个拿出来为first,然后把剩余的都裁剪出来为end,旋转之后的字符串就是end+first,之后将旋转之后的字符串和b进行对比看是否一致。一般旋转次数是a字符串的长度,经达到旋转最高次数之后如果还不一致,就返回false,否则是true。
代码如下:
package com.xzhao.test.cat;
public class bianli {
public static void main(String[] args) {
String a="abcde";
String b="cdeab";
boolean flag=f(a,b);
if(flag){
System.out.println("旋转之后a==b");
}
else{
System.out.println("旋转之后a!=b");
}
}
public static boolean f(String arr,String brr){
for(int i=0;i<arr.length();i++){
if(arr.equals(brr)){
return true;
}
else{
arr=rotate(arr);//记得改变arr的值,不然旋转后的结果一直是一样的
}
}
return false;
}
public static String rotate(String s){
char first=s.charAt(0);
String end=s.substring(1);
return end+first;
}
}
结果如下:

(11)键盘输入任意字符串,打乱里面内容
解题思路:首先使用方法将字符串转换为字符数组,之后采用for循环的方式将数组之间的元素进行交换,从后往前,最后输出
代码如下:
Scanner sc = new Scanner(System.in);
System.out.println("请输入字符串:");
String a=sc.nextLine();
char[] arr=a.toCharArray();//将输入的字符串转换为字符数组
Random r=new Random();
for(int i = arr.length - 1; i >=0; i--){//从后往前进行遍历,换过的就不再换
int randomIndex = r.nextInt(i + 1);
// 交换元素
char temp = arr[i];
arr[i] = arr[randomIndex];
arr[randomIndex] = temp;
}
System.out.println(arr);
结果如下:

(12)
解题思路:先新建一个字符数组存放a-z和A-Z,之后随机得到索引值,分别取4次,最后一位随机给数字。之后将数字这一位随机和数组中的任意一个索引值对应的内容进行交换即可
代码如下:
char[] zimu={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
Random random=new Random();
int suo;
char[] Yanzm=new char[5];
for(int i=0;i<Yanzm.length-1;i++){//随机生成4位字母
suo=random.nextInt(zimu.length);
Yanzm[i]=zimu[suo];
}
Yanzm[Yanzm.length-1]=(char)('0'+random.nextInt(10));//随机生成一位数字字符
int num=random.nextInt(Yanzm.length);
char temp=Yanzm[Yanzm.length-1];
Yanzm[Yanzm.length-1]=Yanzm[num];
Yanzm[num]=temp;
System.out.println(Yanzm);
结果如下:

(13)

解题思路:需要将字符串转换为数字(先将字符串转换为字符数组,之后创建一个方法,使用switch,分别将数组中的每一位都变成数字,将循环后的数字每次*10后再相加新的数字),之后相乘转换为字符串输出。
代码如下:
String num1="34";
String num2="2";
int result=0;
result=(number(num1.toCharArray()))*(number(num2.toCharArray()));
System.out.println(Integer.toString(result));//将数字转换为字符串
}
public static int number(char[] c){
int b=0;
for(int i=0;i<c.length;i++){
b=b*10;
switch(c[i]) {
case '0': b += 0;break;
case '1': b += 1;break;
case '2': b += 2;break;
case '3': b += 3;break;
case '4': b += 4;break;
case '5': b += 5;break;
case '6': b += 6;break;
case '7': b += 7;break;
case '8': b += 8;break;
case '9': b += 9;break;
}
}
return b;
}
结果如下:

(14)

解题思路:采用倒着遍历的方法,从后往前寻找第一个空格的位置,遍历一次就加1,直到找到空格。然后将数字输出就是最后一个单词的长度
代码如下:
Scanner sc = new Scanner(System.in);
System.out.println("请输入字符串:");
String str=sc.nextLine();
char[] c=str.toCharArray();
int count=0;
for(int i=c.length-1;i>=0;i--){
if(c[i]!=' '){
count++;
}
else{
break;
}
}
System.out.println(count);//最后一个单词的长度
}
结果如下:

通过以上字符串的练习,对这一部分有了一定的了解!!!
更多推荐

所有评论(0)