0

これは私が持っているものですが、機能していません。これは私にとって混乱を招きます。下にスクロールすると、私が抱えている正確な問題と私がやろうとしていることを誰かが投稿したことにコメントしました。問題は、ランダムな文字を生成するコードである可能性があると考えていました:

public void add (char fromChar, char toChar){
    Random r = new Random(); //creates a random object
    int randInt;
    for (int i=0; i<charArray.length; i++){
        randInt = r.nextInt((toChar-fromChar) +1);
        charArray[i] = (char) randInt; //casts these integers as characters
    }
}//end add
public int[] countLetters() {
int[] count = new int[26];
char current;

     for (int b = 0; b <= 26; b++) {
         for (int i = 97; i <= 123; i++) {
             char a = (char) i;
             for (int ch = 0; ch < charArray.length; ch++) {
                 current = charArray[ch];
                if (current == a) {
                count[b]++;
                }
             }
         }
     }
return count;
}
4

3 に答える 3

0

これがあなたが望むものです:

これはファイルcharCounter.javaです

import java.util.*;
import java.awt.*;

public class charCounter
{
    char[] charArray = new char[50];
    int randInt;
    Random r = new Random();

    public charCounter()
    {}

    public void create ()
    {
            for (int i=0; i<charArray.length; i++)
        {
                randInt = 97+r.nextInt(26);
                charArray[i] = (char) randInt; //casts these integers as characters
            }
    }

    public void printCharArray()
    {
        for(int i=0; i<charArray.length; i++)
        {
                System.out.println(charArray[i]);
        }
    }

    public int[] countLetters() 
    {
        int[] count = new int[26];
        int index = 0;
            for(int i=0; i<charArray.length; i++)
        {
            index = ((int)charArray[i])-97;
            count[index]++;
        }
        return count;
    }
}

そして、これが私が作ったドライバープログラムです:

public class driver
{
    public static void main(String args[])
    {
        charCounter c = new charCounter();
        int[] printThis;

        c.create();
        printThis = c.countLetters();

        for(int i=0; i<printThis.length; i++)
        {
            System.out.println(printThis[i]);
        }
    }
}
于 2013-01-07T17:41:52.677 に答える
0

他のバグがあるかどうかはわかりませんがb、0 から 26 までの範囲を反復しcount[]、長さ 26 のインデックスとして使用しています。この配列には 0 から 25 までの範囲の有効なインデックスがありIndexOutOfBoundsException、 26.

そのはず:

...
for (int b = 0; b < 26; b++) 
...
于 2012-11-19T00:14:23.303 に答える
0

何が起こっているのかわからないので、これが答えかどうかはわかりません。int[] count 配列には 26 個のインデックスがありますが、27 個までカウントしています: for (int b = 0; b <= 26; i++) -> これは 27 個のインデックスになります。これで試してみてください:

public int[] countLetters() {
    int[] count = new int[26];
    char current;

    for (int b = 0; b < 26; b++) {
        for (int i = 97; i < 123; i++) {
            char a = (char) i;
            for (int ch = 0; ch < charArray.length; ch++) {
                current = charArray[ch];
                if (current == a) {
                    count[b]++;
                }
             }
         }
     }
    return count;
}

小さなエラー、ファビアンに感謝

于 2012-11-19T00:16:59.303 に答える