编译能通过 就是不能运行

gujianjing 2010-11-22 10:22:25
1. 一个字符串参数(value)由字母(a-z,A-Z)组成,且最大字符位数为40,要求写一个函数(maxLength)返回该参数中连续相同字母的最大个数及该字母,如果最大位数有多个,则返回第一个。例:字符串“aaaddxxxxddddxxxx”,返回值为:“x,4”.


public class TestCount {
public static void main(String[] args) {
TestCount tc = new TestCount();
tc.maxLength("aaaddxxxxddddxxxx");
}

public String maxLength(String v){
String value = v;
int[] num = new int[40];
char[] ch = new char[40];
int m = 0,k=0,temp=0;
char[] vs = value.toCharArray();
for(int i=0; i<40; i++){
if(vs[i] == vs[i+1]){
num[m]++;
ch[num[m]] = vs[i];
}
else{
num[m]++;
m++;
continue;
}
}
for(int i=0; i<num.length; i++){
for(int j=0; j<num.length; j++){
if(num[i]<=num[j]){
temp = num[i];
num[i] = num[j];
num[j] = temp;
}
}
}
char[] ch1 = {ch[temp],',',(char)temp};
return ch1.toString();
}

}


哪位高手帮忙看看 为什么不能运行!
...全文
42 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
gujianjing 2010-11-23
  • 打赏
  • 举报
回复
多谢各位大侠
「已注销」 2010-11-22
  • 打赏
  • 举报
回复
程序运行结果:
x,4

/**
* @author Redduke
*/
public class R {
public static void main(String[] args) {
String result = count("aaaddxxxxddddxxxx");
System.out.println(result);
}

static String count(String str) {
int len = str.length();
char maxChar;// 最大个数的字符
int maxCount;// 最大格式
char lastChar;// 上一个字符
int count;// 上一个字符的重复次数
// 初始化第一个
maxChar = lastChar = str.charAt(0);
maxCount = count = 1;

// 开始遍历
char ch;
for (int i = 1; i < len; i++) {
ch = str.charAt(i);
if (ch == lastChar) {
// 如果和上一个字符一样
count++;
if (count > maxCount) {
maxCount = count;
maxChar = ch;
}
} else {
// 字符和上一个不一样
lastChar = ch;
count = 1;
}
}
return maxChar + "," + maxCount;
}
}
「已注销」 2010-11-22
  • 打赏
  • 举报
回复
1.数组越界
2.(char)temp错误
3.char[].toString()错误
4.没有打印输出结果
「已注销」 2010-11-22
  • 打赏
  • 举报
回复
编译通过,只是说明语法没问题。和能不能解决问题差远了

算法逻辑混乱,效率极低。
这道笔试题,考察的重点是算法效率

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧