问题描述
publicclassExDemo{publicstaticvoidmain(Stringargs[]){System.out.println("请输入字符串:");Scannerscan=newScanner(System.in);Stringstr=scan.next();StringE1="[u4e00-u9fa5]";StringE2="[a-zA-Z]";StringE3="[0-9]";intcountH=0;intcountE=0;intcountS=0;char[]arrChar=str.toCharArray();String[]arrStr=newString[arrChar.length];for(inti=0;i<arrChar.length;i++){arrStr[i]=String.valueOf(arrChar[i]);}这里为什么要把输入的字符转换2次类型啊?char[]arrChar=str.toCharArray();String[]arrStr=newString[arrChar.length];
解决方案
解决方案二:
可能是需要把一个字符串拆分成以每个字符组成的字符串的数组,没有现成的方法,所以第一次,把字符串拆分成单个字符数组,再把单个字符转成字符串形式,放入字符串数组。仅是个人看法。
解决方案三:
咳咳,从这个程序声明:intcountH=0;intcountE=0;intcountS=0;这三个参数,应该是为了计算汉字,字母,数字分别出现的个数。将字符串接受进来的时候,转换成字符数组,它是相当于把每个单独的字符拆分出来。但是char类型是ASCLL值,不能使用StringE1="[u4e00-u9fa5]";StringE2="[a-zA-Z]";StringE3="[0-9]";这三个变量的正则匹配。因此必须把它们在单独的放入字符串数组,转换成字符串,这样就可以使用方便使用正则匹配了。我的理解是这样的。