黑马程序员技术交流社区
标题:
为什么去掉出26个子母以外的 如去掉+ - 程序通过不了编译
[打印本页]
作者:
靓仔
时间:
2013-10-29 22:05
标题:
为什么去掉出26个子母以外的 如去掉+ - 程序通过不了编译
本帖最后由 靓仔 于 2013-10-30 08:36 编辑
练习
"abcabb...."获取该字符串中字母出现的次数
希望打印结果a(2)b(3)c(1).......
import java.util.*;
class MapTest3
{
public static void main(String[] args)
{
String S=charCount("aabbckededefdssa");
System.out.println(S);
}
public static String charCount(String str)
{
int count=0;
char[] chs=str.toCharArray();
TreeMap<Character,Integer> tm= new TreeMap<Character,Integer>();//我们肯定拿字母作为键,字母作为值,char,和int,
//可是泛型类接收的都是引用类型,所以用Character和integer、
for(int x=0;x<chs.length;x++)
{
if(!(chs[x]>='a'&& chs[x]<='z'||chs[x]>='A'&& chs[x]<='Z'));//去除非字母,如+ - 加入b进来,判断正确,就不在判断右边了 这通过不了为什么啊
continue;
Integer Value=tm.get(chs[x]);//字母作为键去找集合
if(Value!=null)
{
count=Value;
}
count++;
tm.put(chs[x],count);//会打印a(3)b(4)c(5)d(10)e(9)f(10)k(6)s(12),所以count++要清零
count=0;//可以定义在里边,但定义在外边好。节省空间
/*代码优化
if(Value==null)
{
tm.put(chs[x],1);
}
else
{
Value =Value+1;
tm.put(chs[x],Value);
}
*/
}
//System.out.println(tm);
//如何打印出a(3)b(2).....
StringBuilder sb=new StringBuilder();
Set<Map.Entry<Character,Integer>> entrySet=tm.entrySet();
Iterator<Map.Entry<Character,Integer>> it=entrySet.iterator();
while(it.hasNext())
{
Map.Entry<Character,Integer> me=it.next();
Character ch=me.getKey();
Integer Value=me.getValue();
sb.append(ch+"("+Value+")");
}
return sb.toString();
}
}
作者:
睡不够的猪
时间:
2013-10-29 22:30
import java.util.*;
class MapTest3
{
public static void main(String[] args)
{
String S=charCount("aabbckededefdssa");
System.out.println(S);
}
public static String charCount(String str)
{
int count=0;
char[] chs=str.toCharArray();
TreeMap<Character,Integer> tm= new TreeMap<Character,Integer>();//我们肯定拿字母作为键,字母作为值,char,和int,
//可是泛型类接收的都是引用类型,所以用Character和integer、
for(int x=0;x<chs.length;x++)
{
if(!(chs[x]>='a'&& chs[x]<='z'||chs[x]>='A'&& chs[x]<='Z'))//去除非字母,如+ - 加入b进来,判断正确,就不在判断右边了 这通过不了为什么啊
continue;
Integer Value=tm.get(chs[x]);//字母作为键去找集合
if(Value!=null)
{
count=Value;
}
count++;
tm.put(chs[x],count);//会打印a(3)b(4)c(5)d(10)e(9)f(10)k(6)s(12),所以count++要清零
count=0;//可以定义在里边,但定义在外边好。节省空间
/*代码优化
if(Value==null)
{
tm.put(chs[x],1);
}
else
{
Value =Value+1;
tm.put(chs[x],Value);
}
*/
}
//System.out.println(tm);
//如何打印出a(3)b(2).....
StringBuilder sb=new StringBuilder();
Set<Map.Entry<Character,Integer>> entrySet=tm.entrySet();
Iterator<Map.Entry<Character,Integer>> it=entrySet.iterator();
while(it.hasNext())
{
Map.Entry<Character,Integer> me=it.next();
Character ch=me.getKey();
Integer Value=me.getValue();
sb.append(ch+"("+Value+")");
}
return sb.toString();
}
}
复制代码
你代码是正确的 就在 if(!(chs[x]>='a'&& chs[x]<='z'||chs[x]>='A'&& chs[x]<='Z'))后面多了个“;”号 去掉就行了
作者:
喂,咱不离!
时间:
2013-10-29 23:29
if(!(chs[x]>='a'&& chs[x]<='z'||chs[x]>='A'&& chs[x]<='Z')) ; //去除非字母,如+ - 加入b进来,判断正确,就不在判断右边了 这通过不了为什么啊
因为 你的if语句加了分号 不能起到去除作用 你把分号去了就行
作者:
胡建伟
时间:
2013-10-30 07:40
错在if后面你误加上了分号;这可能是你编写代码时候习惯性错误,错过这一次,以后记住啦,要不这种失误会让你反复检验代码n次都很难发现的。
if(!(chs[x]>='a'&& chs[x]<='z'||chs[x]>='A'&& chs[x]<='Z'))//去除非字母,如+ - 加入b进来,判断正确,就不在判断右边了 这通过不了为什么啊
if语句格式:if(条件表达式)
{
执行语句
}
if(xx)后面是不跟分号的
作者:
咸菜_、And_肉
时间:
2013-10-30 07:58
import java.util.*;
class MapTest3
{
public static void main(String[] args)
{
String S=charCount("aabbckededefdssa");
System.out.println(S);
}
public static String charCount(String str)
{
int count=0;
char[] chs=str.toCharArray();
TreeMap<Character,Integer> tm= new TreeMap<Character,Integer>();//我们肯定拿字母作为键,字母作为值,char,和int,
//可是泛型类接收的都是引用类型,所以用Character和integer、
for(int x=0;x<chs.length;x++)
{
if(!(chs[x]>='a'&& chs[x]<='z'||chs[x]>='A'&& chs[x]<='Z'))//把;去掉,你回头可以看看if用法,if用法错了
Integer Value=tm.get(chs[x]);//字母作为键去找集合
if(Value!=null)
{
count=Value;
}
count++;
tm.put(chs[x],count);//会打印a(3)b(4)c(5)d(10)e(9)f(10)k(6)s(12),所以count++要清零
count=0;//可以定义在里边,但定义在外边好。节省空间
/*代码优化
if(Value==null)
{
tm.put(chs[x],1);
}
else
{
Value =Value+1;
tm.put(chs[x],Value);
}
*/
}
//System.out.println(tm);
//如何打印出a(3)b(2).....
StringBuilder sb=new StringBuilder();
Set<Map.Entry<Character,Integer>> entrySet=tm.entrySet();
Iterator<Map.Entry<Character,Integer>> it=entrySet.iterator();
while(it.hasNext())
{
Map.Entry<Character,Integer> me=it.next();
Character ch=me.getKey();
Integer Value=me.getValue();
sb.append(ch+"("+Value+")");
}
return sb.toString();
}
}
if用法错了,去掉;就行了
作者:
黄炳期
时间:
2013-10-30 08:39
养成问题解决后重新分类的好习惯~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2