因此我无法创建此函数,必须找到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) );
}
答案 0 :(得分: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
答案 1 :(得分:1)
首先 - 你的方法是递归的,它会破坏。 我想你想把字符转换成十进制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
}
答案 2 :(得分:0)
为了做到这一点,这是一个关于如何做到这一点的练习吗?如果没有,请使用Character数组并使用.digit()。
如果是这样,那么你就是在正确的轨道上,但我的第一个想法就是循环,减去适当的值以将ascii字符更改为数字,也许将它们粘贴到一个新数组中,然后再循环到平均值。
老实说,我不知道你是怎么用0循环尝试这个。