微科社区,轻松开发从此开始! 请登陆 免费注册

微科社区

当前位置:首页 > Java平台 > J2SE >

我写的这个函数怎么找不出出现最多的字符?

时间:2014-04-11 20:21  浏览:努力统计中...
@Test publicvoidtest1(){ Stringstr= 9888 ; findChar(str); } voidfindChar(Strings){ //将字符串转化为字符数组 charc[]=s.toCharArray(); Integermax=0; CharactermaxCh=null; MapCharacter,Integermap=newHashMapCharacter,Integer(); for(int
@Test
public void test1() {
String str = "9888";
findChar(str);
}

void findChar(String s) {
// 将字符串转化为字符数组
char c[] = s.toCharArray();
Integer max = 0;
Character maxCh = null ;
Map<Character, Integer> map = new HashMap<Character, Integer>();

for (int i = 0; i < c.length; i++) {
char ch = c[i];
if (!map.containsKey(ch)) {
map.put(ch, 1);

} else {
Integer value = map.get(ch);
map.put(ch, value++);
if (value > max) {
max = value;
maxCh = ch;
}
}
}
System.out.println("出现最多的字符是" + maxCh + "次数为" + max);
}

你没运行好吧。你写个main 函数放进去是可以的/

++ value

我在你的代码中加了  几行输出的调试代码 可以帮助你思考  
public void findChar(String s) {
// 将字符串转化为字符数组
char c[] = s.toCharArray();
Integer max = 0;
Character maxCh = null ;
Map<Character, Integer> map = new HashMap<Character, Integer>();

for (int i = 0; i < c.length; i++) {
char ch = c[i];
if (!map.containsKey(ch)) {
map.put(ch, 1);

} else {
Integer value = map.get(ch);
map.put(ch, value++);
if (value > max) {
max = value;
maxCh = ch;
}
}
}
System.out.println("出现最多的字符是" + maxCh + "次数为" + max);

运行的结果 是 
4
第0次循環,字符null次數為0
第1次循環,字符null次數為0
第2次循環,字符8次數為2
第3次循環,字符8次數為2
出现最多的字符是8次数为2



package D2;

import java.util.HashMap;
import java.util.Map;
public class D7 {

/**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
D7 d = new D7();
String str = "9888";
d.findChar(str);
}

public void findChar(String s) {
// 将字符串转化为字符数组
char c[] = s.toCharArray();
Integer max = 0;
Character maxCh = null ;
Map<Character, Integer> map = new HashMap<Character, Integer>();
System.out.println(c.length);
for (int i = 0; i < c.length; i++) {
char ch = c[i];
if (!map.containsKey(ch)) {
map.put(ch, 1);

} else {
Integer value = map.get(ch);
map.put(ch, value++);
if (value > max) {
max = value;
maxCh = ch;
}
}
System.out.println("第"+i+"次循環,字符"+maxCh+"次數為"+max);
}
System.out.println("出现最多的字符是" + maxCh + "次数为" + max);

}
不好意思 贴错了

package com.cn.niit.countstring;

import java.util.HashMap;
import java.util.Map;

/**
 * @author Administrator
 *统计给定的字符串中出现最多的字符
 */
public class CountStringDemo {

/**
 * @param args
 */

public static void test1()
{
String str = "9888";
findChar(str);
}

static void findChar(String s)
{
// 将字符串转化为字符数组
char c[] = s.toCharArray();
Integer max = 0;//记录出现最多字符次数
Character maxCh = null ;  //对应的字符
Map<Character, Integer> map = new HashMap<Character, Integer>();

for (int i = 0; i < c.length; i++)
{
char ch = c[i];  //键值key
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线------