1

したがって、char配列の整数平均を見つける必要があるこの関数の作成に問題があります。

これは私の配列です char[]letters = {'A', 'B' , 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'} ;

A = 32 j = 74のような整数平均を見つけるためにキャストを入力しようとしています。整数値を追加して文字に戻しますが、現時点では立ち往生しています。

/********************************************************************************
 This function will calculate the integer average of characters in the array
********************************************************************************/
public static void average( char [] letters )
{
     int total = 0;

     char mean;


     total = total + letters[letters.length];
     mean = (char)total / letters.length;

     System.out.println("The value is " + average( letters) );
}
4

3 に答える 3

2

これは正しくありません:

 total = total + letters[letters.length];

この操作は、配列の終わりを超えた値をに追加しtotal、例外をトリガーします。

ここにループが必要です:

for (int i = 0 ; i != letters.length ; i++)
    total += letters[i];

for次のように、 -inループを使用することもできます。

for (char ch : letters)
    total += ch;

またtotal、除算の結果をキャストする代わりにキャストしています。

mean = (char)total / letters.length;

に置き換える必要があります

mean = (char)(total / letters.length); // Note the added parentheses
于 2012-10-28T23:10:16.323 に答える
1

まず第一に、あなたのメソッドは再帰的であり、壊れます。文字を10進数のASCIIコードにキャストしたいと思います。これを試して:

public static int average( char [] letters )
{
     int total = 0;

     for(int i = 0; i < letters.length; i++){
       total += (int)letters[i];
     }

     return total / letters.length; //or cast it back to char if you prefer
}
于 2012-10-28T23:17:21.173 に答える
0

これは、それを行うためにこれを行う方法の演習ですか? そうでない場合は、文字配列を使用し、.digit() を使用します。

もしそうなら、あなたは正しい軌道に乗っていますが、私の最初の考えは、適切な値を差し引いてアスキー文字を数値に変更し、おそらくそれらを新しい配列に貼り付け、再びループして平均化することです。

正直なところ、0 ループでこれをどのように試みているのかわかりません。

于 2012-10-28T23:15:38.533 に答える