黑马程序员技术交流社区
标题:
程序运行没有结果,编译没有报错,哪里出问题 了?
[打印本页]
作者:
王延龙
时间:
2013-7-26 03:09
标题:
程序运行没有结果,编译没有报错,哪里出问题 了?
本帖最后由 杜光 于 2013-7-28 09:40 编辑
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;
public class MapTest {
/**
* 练习:
* 实现需求:"fdgavcbsacdfs"获取该字符串中,每一个字母出现的次数。
* 要求打印结果:a(2)b(1)……;
*/
public static void main(String[] args) {
String str = "fdgavcbsacdfs";
//定义方法实现功能封装
String s = getCherCount(str);
//显示打印结果
System.out.println(s);
}
private static String getCherCount(String str) {
// 1.将字符串变成字符数组 toCharArray()方法
char[] charArray = str.toCharArray();
// 2.定义一个Map集合表
Map<Character,Integer> map = new TreeMap<Character,Integer>();
// 遍历数组
for (int i = 0; i < charArray.length; i++) {
if (charArray
>= 'a' && charArray
<= 'z'
|| charArray
>= 'A' && charArray
<= 'Z')
continue;
{
// 将数组中的字母作为键去查Map表
Integer value = map.get(charArray
);
// 判断值是否为null
if (value == null) {
map.put(charArray
, 1);
}
// 如果字符已经存在
else {
map.put(charArray
, value + 1);
}
}
}
return maptoString(map);
}
private static String maptoString(Map<Character, Integer> map) {
StringBuilder sb = new StringBuilder();
Iterator<Character> it = map.keySet().iterator();
while (it.hasNext()) {
Character key = it.next();
Integer value = map.get(key);
sb.append(key + "(" + value + ")");
}
return sb.toString();
}
}
//程序运行没有结果,编译没有报错,哪里出问题 了?
作者:
lljwdbklb
时间:
2013-7-26 08:27
当然没结果啦
你的里面有没有 数字 也就是说没有0~9数字字符
所以没有记录到集合里面
都没有记录
会打印出来就是奇迹了
如果还是不懂你看看你的判断条件
if (charArray[i] >= 'a' && charArray[i] <= 'z'
|| charArray[i] >= 'A' && charArray[i] <= 'Z')
continue;
你这里面写如果读取到a~z 或 A~Z 就会跳出这次操作 然后继续循环
作者:
张强1
时间:
2013-7-26 08:51
没有把你要打印的内容放到集合中,打印出来的当然是空了
作者:
xscn
时间:
2013-7-26 10:27
本帖最后由 xscn 于 2013-7-26 10:42 编辑
if (
!(
charArray >= 'a' && charArray <= 'z'
|| charArray >= 'A' && charArray <= 'Z'
)
) 修改下吧 continue后面的{}也没必要写吧
作者:
の放下执著
时间:
2013-7-26 16:44
if (charArray[i] >= 'a' && charArray[i] <= 'z'
|| charArray[i] >= 'A' && charArray[i] <= 'Z')
continue;
//这句话有问题,当判断到chaArray数组中是字母时,就continue不执行后面的代码直接进入下一轮循环了。
改为 if (!(charArray[i].toLowerCase() >= 'a' && charArray[i].toLowerCase() <= 'z'))
continue;
还有后面有一对大括号貌似也是多余的,应该把它去掉,增加代码的严谨性。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2