1)若已知字符串的当前字符不是大于0的数字字符,则复制该字符于新字符串中;
(2)若已知字符串的当前字符是一个数字字符,且它之后没有后继字符,则简单地将它复制到新字符串中;
(3)若已知字符串的当前字符是一个大于0的数字字符,并且还有后继字符,设该数字字符的面值为n,则将它的后继字符(包括后继字符是一个数字字符)重复复制n+1次到新字符串中;
(4)以上述一次变换为一组,在不同组之间另插入一个下划线'_'用于分隔;
(5)若已知字符串中包含有下划线'_',则变换为 ”\UL” 。public class Code {
public StringBuffer encode(String str){
char[] chs = str.toCharArray();
StringBuffer sb = new StringBuffer();
boolean change = false;//是否变化
for(int i = 0; i < chs.length; i++){
//若已知字符串的当前字符不是大于0的数字字符,则复制该字符于新字符串中;
if(chs[i] < 48 || chs[i] >57){
sb.append(chs[i]);
change = true;
}
//若已知字符串的当前字符是一个数字字符
if(chs[i] > 48 || chs[i] <= 57){
//且它之后没有后继字符,则简单地将它复制到新字符串中;
if(i == (chs.length -1)){
sb.append(chs[i]);
}else{//有后继字符,设该数字字符的面值为n,则将它的后继字符(包括后继字符是一个数字字符)重复复制n+1次到新字符串中;
String sss = String.valueOf(chs[i]);
int number = Integer.parseInt(sss);
for(int j = 0; j <= number; j++){
sb.append(chs[i]);
change = true;
}
}
}
//以上述一次变换为一组,在不同组之间另插入一个下划线'_'用于分隔;
if(change){
sb.append("_");
change = false;
}
if(chs[i] == '_'){
sb.append("\\UL");
}
}
return sb;
}
public static void main(String[] args) {
System.out.println(new Code().encode("24ab_2t2"));
}}运行报java.lang.NumberFormatException异常,请问问题出在哪,网上看了下这个异常是因为非数字字符转成数字导致的,但我实在看不看有什么问题,求解
(2)若已知字符串的当前字符是一个数字字符,且它之后没有后继字符,则简单地将它复制到新字符串中;
(3)若已知字符串的当前字符是一个大于0的数字字符,并且还有后继字符,设该数字字符的面值为n,则将它的后继字符(包括后继字符是一个数字字符)重复复制n+1次到新字符串中;
(4)以上述一次变换为一组,在不同组之间另插入一个下划线'_'用于分隔;
(5)若已知字符串中包含有下划线'_',则变换为 ”\UL” 。public class Code {
public StringBuffer encode(String str){
char[] chs = str.toCharArray();
StringBuffer sb = new StringBuffer();
boolean change = false;//是否变化
for(int i = 0; i < chs.length; i++){
//若已知字符串的当前字符不是大于0的数字字符,则复制该字符于新字符串中;
if(chs[i] < 48 || chs[i] >57){
sb.append(chs[i]);
change = true;
}
//若已知字符串的当前字符是一个数字字符
if(chs[i] > 48 || chs[i] <= 57){
//且它之后没有后继字符,则简单地将它复制到新字符串中;
if(i == (chs.length -1)){
sb.append(chs[i]);
}else{//有后继字符,设该数字字符的面值为n,则将它的后继字符(包括后继字符是一个数字字符)重复复制n+1次到新字符串中;
String sss = String.valueOf(chs[i]);
int number = Integer.parseInt(sss);
for(int j = 0; j <= number; j++){
sb.append(chs[i]);
change = true;
}
}
}
//以上述一次变换为一组,在不同组之间另插入一个下划线'_'用于分隔;
if(change){
sb.append("_");
change = false;
}
if(chs[i] == '_'){
sb.append("\\UL");
}
}
return sb;
}
public static void main(String[] args) {
System.out.println(new Code().encode("24ab_2t2"));
}}运行报java.lang.NumberFormatException异常,请问问题出在哪,网上看了下这个异常是因为非数字字符转成数字导致的,但我实在看不看有什么问题,求解
package fortest;public class Code {
public StringBuffer encode(String str) {
char[] chs = str.toCharArray();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < chs.length; i++) {
// 若已知字符串的当前字符不是大于0的数字字符,则复制该字符于新字符串中;
if (chs[i] < 48 || chs[i] > 57) {
if (chs[i] == 95) {
sb.append("\\UL");
sb.append("_");
continue;
}
sb.append(chs[i]);
sb.append("_");
}
// 若已知字符串的当前字符是一个数字字符
if (chs[i] >= 48 && chs[i] <= 57) {
// 且它之后没有后继字符,则简单地将它复制到新字符串中;
if (i == (chs.length - 1)) {
sb.append(chs[i]);
} else if(chs[i]>48) {// 有后继字符,设该数字字符的面值为n,则将它的后继字符(包括后继字符是一个数字字符)重复复制n+1次到新字符串中;
String s;
int number;
s = String.valueOf(chs[i]);
try {
number = Integer.parseInt(s);
} catch (Exception e) {
continue;
}
for (int j = 0; j < number; j++) {
sb.append(chs[i+1]);
}
sb.append("_"); }
}
}
return sb;
} public static void main(String[] args) {
System.out.println(new Code().encode("24ab_2t2"));
}}
public String encode(String str) {
char[] chs = str.toCharArray();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < chs.length; i++) { // 若已知字符串的当前字符不是大于0的数字字符,则复制该字符于新字符串中;
if (chs[i] <= 48 || chs[i] > 57) {
if (chs[i] == '_') {
sb.append("\\UL");
} else {
sb.append(chs[i]);
}
sb.append("_");
}
// 若已知字符串的当前字符是一个数字字符
if (chs[i] > 48 && chs[i] <= 57) {
// 且它之后没有后继字符,则简单地将它复制到新字符串中;
if (i == (chs.length - 1)) {
sb.append(chs[i]);
} else {// 有后继字符,设该数字字符的面值为n,则将它的后继字符(包括后继字符是一个数字字符)重复复制n+1次到新字符串中;
String count = String.valueOf(chs[i]);
System.out.println(count);
int number = Integer.parseInt(count);
for (int j = 0; j <= number; j++) {
sb.append(chs[i + 1]);
}
}
sb.append("_");
} }
return sb.toString();
} public static void main(String[] args) { System.out.println(new Code().encode("24ab_2t2"));
}}