import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
}
}
解法一
提示:Stirng、StringBuilder、StringBuffer 都可以用来操作字符串。 不同是 String 不允许被修改 ( 被final修饰 );StringBuilder、StirngBuffer 类的对象能够被多次修改,而不产生新的对象。StringBuilder 和 StringBuffer 最大的不同在于 StringBuilder 类的方法不是线程安全的 ( 不能同步访问 ),但StringBuilder 有速度优势,所以多数情况下推荐使用 StringBuilder .
①:用 StringBuilder 类的 append() 方法保存字符串,然后通过 reverse() 方法反转字符串 ( 我开始时思路不够清晰才这样用!读者不要这样 )。②: 遍历字符串,每三个字母用逗号分隔,使用 insert() 方法插入, 号,但每次插入, 号后,字符串长度就会 +1,所以需要让 len++; ③: 由于要求每三个字母用逗号分隔,所以理论上是 i = i + 3; 但因为每次插入, 号后,字符串长度就会 +1,所以应该是 i = i + 4; 而不是 i = i + 3;④: 在完成, 号插入后,再将字符串用 reverse() 反转回去。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
StringBuilder sb = new StringBuilder(str);
sb.reverse();
int i = 3, len = str.length();
while(i < len){
sb.insert(i, ",");
len++;
i+=4;
}
sb.reverse();
System.out.println(sb);
}
}
这种解法对初学者而言是比较友好的.
解法二
从末尾开始添加, 号,添加一次就 i - 3 ( 为什么是 3 而不是跟解法一一样是 4 呢? 因为索引是从首部开始查找的,所以从末尾开始添加, 号不会影响索引的查找;而从首部开始添加, 号会影响索引的查找 )
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
StringBuilder sb = new StringBuilder(str);
int i = str.length() - 3;
while(i > 0){
sb.insert(i, ",");
i-=3;
}
System.out.println(sb);
}
}
|