import java.util.Scanner;
public class Example1 {
public static void main(String args[])
{
System.out.println("请输入字符串");
Scanner scan=new Scanner(System.in);
String str = scan.next();
String E1="[\u4e00-\u9fa5]";
String E2="[a-zA-Z]";
int countH=0;
int countE=0;
char[] arrChar=str.toCharArray();
String[] arrStr=new String[arrChar.length];
for (int i=0;i<arrChar.length ;i++ )
arrStr[i]=String.valueOf(arrChar[i]);
//请把程序中的“for (String i: arrStr )”改成传统的for语句形式进行调试;
//(源程序) for (String i: arrStr ) {
// if (i.matches(E1)) {
// countH++;
// }
// if (i.matches(E2)) {
// countE++;
// }
// }
for (int i=0;i<arrStr.length ;i++ ) //自己只改了for语句开头
{
if(i.matches(E1)) {
countH++;
}
if(i.matches(E2)) {
countE++;
}
}
System.out.println("汉字的个数"+countH);
System.out.println("字母的个数"+countE);
}
}
希望能有详细的解释,谢谢大家!
for (int i=0;i<arrStr.length ;i++ ) //自己只改了for语句开头
{
if(i.matches(E1)) {
countH++;
}
if(i.matches(E2)) {
countE++;
}
}
i只是索引呀,应该要获取值所以改成arrStr[i]
改后代码如下
for (int i=0;i<arrStr.length ;i++ ) //自己只改了for语句开头
{
if(arrStr[i].matches(E1)) {
countH++;
}
if(arrStr[i].matches(E2)) {
countE++;
}
}
for (String i: arrStr )这个i是字符(自动转换为整形了),要字符串才可以。
你可以改为subString方法取子串。
这个位置是字符串,写出传统模式,应该是数组中的内容,再处理,
将i 换成 arrStr[i]
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632