我试图在100个字符的随机数组中计算从a到z的每个字符的数量。
import java.util.Random;
public class RandomChars {
public static void main(String[] args) {
Random r = new Random();
String chars= "abcdefghijklmnopqrtuvwxyz";
String[] countc = new String[26];
char[] charArray = new char[100];
for(int i = 1;i<=100;i++)
{
charArray[i-1]=chars.charAt(r.nextInt(chars.length()));
System.out.print(chars.charAt(r.nextInt(chars.length())));
if(i%20==0)
{
System.out.println("");
}
}
//System.out.println(charArray.length);
int m = 0;
int p=0;
for(int n = 0;n<100;n++)
{
char xx = chars.charAt(n);
m = 0;
p=0;
do
{
if(charArray[m]==xx)
{
p=p+1;
}
m=m+1;
}while(m<=charArray.length);
countc[n]=""+p+""+xx;
}
System.out.println("The count of each character is "+ countc);
}
}
答案 0 :(得分:1)
> for(int n = 0;n<100;n++)
应该是
for (int n =0; n<99; n++)
charArray = 0 to 99 (i-1)
,但下面的子程序是0到100 (int n)
答案 1 :(得分:0)
改变这个:
m<=charArray.length
对此:
m<charArray.length
答案 2 :(得分:0)
do
{
/* ... */
}while(m<=charArray.length);
在最后一次迭代中,m
将等于charArray.length
,因此当您致电charArray[m]
时,它将超出界限。将其更改为while(m < charArray.length);
。
答案 3 :(得分:0)
char xx = chars.charAt(n);当chars.charAt()可以采用25的最大参数时,一直被调用到99.你需要修复你的循环逻辑,以便检查26个可能字符中的每一个的所有100个元素,而不是相反
编辑:你的do..while循环也发生了同样的事情。
答案 4 :(得分:0)
首先,您的String chars
省略了&#39; s&#39;所以我已经添加了它并更新了代码,使其工作方式略有不同。
创建charArray
后,它会迭代每个字符26次(每个字母一次)。可能有更好的方法来做到这一点,但我对Java不太热。
import java.util.Random;
import java.util.Arrays;
public class RandomChars {
public static void main(String[] args) {
Random r = new Random();
String chars= "abcdefghijklmnopqrstuvwxyz";//added the 's'?
String[] countc = new String[26];
char[] charArray = new char[100];
for(int i=0; i<100; i++){
charArray[i]=chars.charAt(r.nextInt(chars.length()));
System.out.print(charArray[i]);
if((i+1)%20==0){
System.out.println("");
}
}
for(int n=0; n<26; n++){//for each of the 26 chars
char xx = (char)chars.charAt(n);
int p=0;
for(int a=0; a<100; a++){//loop through the charArray and count the matches
if(charArray[a]==xx){
p++;
}
}
countc[n]=""+xx+":"+p;
}
System.out.println("The count of each character is "+Arrays.toString(countc));
}
}
http://runnable.com/VCRLPa-2kdoqq2dW/stackoverflow-com-questions-26042877-for-java