Java编译报错无法取消引用int,请问该如何修改程序?

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