0
点赞
收藏
分享

微信扫一扫

对字符串进行分割并且补位的算法解析

对字符串进行分割并且补位的算法解析_线程安全

我的思路分析

  • 需要输入字符串,用到Scanner和hasNextLine()。
    (1)建立 Scanner sc = new Scanner(​​System.in​​);
    (2)判断有无输入用sc.hasNextLine().
  • 我们在接受字符串之后此处我的做法是将字符串的长度给求出来通过length()方法即可求出size.然后通过8-8%size的方式可以得到需要补0的位数。使用StringBuilder中的append()函数进行字符串修改,最后通过toString()转化为字符串即可。
    字符串缓冲区的建立:StringBuilder sb = new StringBuilder();
  • 输出时,截取前8位进行输出,并更新字符串。用到str.substring()函数:
    (1)str.substring(i)意为截取从字符索引第i位到末尾的字符串。
    (2)str.substring(i,j)意为截取索引第i位到第(j-1)位字符串。包含i,不包含j。

相关的知识点补充

StringBuilder和StringBuffer和String的区别

String类是不可变类,即一旦一个String对象被创建以后,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁。StringBuffer对象则代表一个字符序列可变的字符串.而StringBuilder也是字符序列可变的字符串.它们有共同的父类 AbstractStringBuilder,并且两个类的构造方法和成员方法也基本相同。不同的是,StringBuffer是线程安全的,而StringBuilder是非线程安全的.所以如果我们讲究性能而不需要过度关注线程安全的话,在三者中我们最好使用StringBuilder.

import java.util.Scanner;
import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextLine()) { // 注意 while 处理多个 case
String str = in.nextLine();
StringBuilder str1= new StringBuilder();
str1.append(str);
int size = str.length();
int count = 8 - 8%size;
while(count>0){
str1.append("0");
count--;
}

String sb = str1.toString();
System.out.println(sb.substring(0,8));

}
}
}

结果截图:

对字符串进行分割并且补位的算法解析_线程安全_02

举报

相关推荐

0 条评论