字符串3d5a2e
第一问:给你一个字符串如“3d5a2e”,如何用java解析,并输出dddaaaaaee?
仅供参考:关于类似的像"数字"+"字符",都可以用以下程序算出,
存在的问题:1 当全是数字或全是字母的则不能被算出。各位如果哪位有更好的高见请赐教
洗耳恭听,呵,,
数字数组 字符数组
3 空
0 d
5 空
0 a
2 空
0 e */
/**
* 此类测试字符串的解析 用到的知识点:判断字符是否是数字,数组
*
* @author WULIANG
*
*/
public class Test2 {
/**
* 最重要的是当数字数组不为0时,字符数组为空,字符数组不为空时,数字数组为0
*
* @param args
*/
public static void main(String[] args) {
Test2 t = new Test2();
t.sysnum("5d6a");
System.out.println("/n");
t.sysnum2("3d5a2e");
}
public void sysnum2(String str) {
int intNum = 0;// 用于计算字符串中的数字的总和,并且将成为最后字符数组的长度
int c[] = new int[str.length()];// 整型数组用来存放数字的数组
char cc[] = new char[str.length()];// 字符数组用来存放解析出来的字符数组
String s = "";// 最终结果
// 存入数组中
for(int i=0;i<str.length();i++){
// 解析字符串中的每个字符
char ch = str.charAt(i);
if(java.lang.Character.isDigit(ch)){
// 将数字相加得到总和,并将成为字符数组的长度
intNum += Integer.parseInt(String.valueOf(ch));
// 将数字存放到数组中
c[i]= Integer.parseInt(String.valueOf(ch));
}else{
// 存入字符
cc[i] = ch;
}
}
int n = -1;// 定义一个整数用于字符数组的序号
char result[] = new char[intNum];// 最终字符数组
for(int k=0;k<c.length;k++){
if(c[k]!=0){ // 如果不为空
for(int h=k;h<c[k]+k;h++){
n++;
result[n]=cc[k+1];
}
}
}
for(int b=0;b<intNum;b++){
s +=result[b];
}
System.out.println(s);
}
public void sysnum(String str) {
int len = str.length();
int[] num = new int[len/2];
String[] out = new String[len/2];
for(int i=0;i<len;i+=2) {
num[i/2] = Integer.parseInt(str.substring(i,i+1));
out[i/2] = str.substring(i+1,i+2);
}
for(int i=0;i<len/2;i++) {
for(int j=0;j<num[i];j++) {
System.out.print(out[i]);
}
//System.out.println();
}
}
}
/*
* 数字数组 字符数组 3 空 0 d 5 空 0 a 2 空 0 e
*/
// System.out.println(result[h]+"/t"+h+"/t"+n);
字符串3d5a2e
第一问:给你一个字符串如“3d5a2e”,如何用java解析,并输出dddaaaaaee? 仅供参考:关于类似的像"数字"+"字符",都可以用以下程序算出, 存在的问题:1 当全是数字或全是字母的则不能被算出。各位如果哪位有更好的高见请赐教 洗耳恭听,呵,, 数字数组 字符数组 3 空 0 d 5 空 0 a 2 空 0 e */ /** * 此类测试字符串的解析 用到的知识点:判断字符是否是数字,数组 * * @author WULIANG * */ public class Test2 { /** * 最重要的是当数字数组不为0时,字符数组为空,字符数组不为空时,数字数组为0 * * @param args */ public static void main(String[] args) { Test2 t = new Test2(); t.sysnum("5d6a"); System.out.println("/n"); t.sysnum2("3d5a2e"); } public void sysnum2(String str) { int intNum = 0;// 用于计算字符串中的数字的总和,并且将成为最后字符数组的长度 int c[] = new int[str.length()];// 整型数组用来存放数字的数组 char cc[] = new char[str.length()];// 字符数组用来存放解析出来的字符数组 String s = "";// 最终结果 // 存入数组中 for(int i=0;i<str.length();i++){ // 解析字符串中的每个字符 char ch = str.charAt(i); if(java.lang.Character.isDigit(ch)){ // 将数字相加得到总和,并将成为字符数组的长度 intNum += Integer.parseInt(String.valueOf(ch)); // 将数字存放到数组中 c[i]= Integer.parseInt(String.valueOf(ch)); }else{ // 存入字符 cc[i] = ch; } } int n = -1;// 定义一个整数用于字符数组的序号 char result[] = new char[intNum];// 最终字符数组 for(int k=0;k<c.length;k++){ if(c[k]!=0){ // 如果不为空 for(int h=k;h<c[k]+k;h++){ n++; result[n]=cc[k+1]; } } } for(int b=0;b<intNum;b++){ s +=result[b]; } System.out.println(s); } public void sysnum(String str) { int len = str.length(); int[] num = new int[len/2]; String[] out = new String[len/2]; for(int i=0;i<len;i+=2) { num[i/2] = Integer.parseInt(str.substring(i,i+1)); out[i/2] = str.substring(i+1,i+2); } for(int i=0;i<len/2;i++) { for(int j=0;j<num[i];j++) { System.out.print(out[i]); } //System.out.println(); } } } /* * 数字数组 字符数组 3 空 0 d 5 空 0 a 2 空 0 e */ // System.out.println(result[h]+"/t"+h+"/t"+n); |