Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取列表中平均字符串的有效方法_Java - Fatal编程技术网

Java 获取列表中平均字符串的有效方法

Java 获取列表中平均字符串的有效方法,java,Java,如果列表中可能包含未定义的“a”、“B”、“C”或“D”,我必须计算列表中的平均字母数 例如,[A,C]的平均值是B 这是我的方法: public static String calculateAverage(final List<String> letters) { int numberOfA = 0; int numberOfB = 0; int numberOfC = 0; int numberOfD = 0; for (String

如果列表中可能包含未定义的“a”、“B”、“C”或“D”,我必须计算列表中的平均字母数

例如,[A,C]的平均值是B

这是我的方法:

public static String calculateAverage(final List<String> letters) {

    int numberOfA = 0;
    int numberOfB = 0;
    int numberOfC = 0;
    int numberOfD = 0;
    for (String letter : letters) {
        if (letter.equalsIgnoreCase("A")) {
            numberOfA++;
        }
        if (letter.equalsIgnoreCase("B")) {
            numberOfB++;
        }
        if (letter.equalsIgnoreCase("C")) {
            numberOfC++;
        }
        numberOfD++;
    }

    int average =
        (numberOfA * 1 + numberOfB * 2
            + numberOfC * 3 + numberOfD * 4)
            / letters.size();

    if (average>=1 && average<2) return "A";
    if (average>=2 && average<3) return "B";
    if (average>=3 && average<4) return "C";
    return "D";
}
publicstaticstringcalculateaverage(最终列表字母){
int numberOfA=0;
int numberOfB=0;
int numberOfC=0;
int numberOfD=0;
for(字符串字母:字母){
if(字母equalsIgnoreCase(“A”)){
numberOfA++;
}
if(同等信号情况(“B”)字母){
numberOfB++;
}
if(字母相等信号情况(“C”)){
numberOfC++;
}
numberOfD++;
}
整数平均=
(数字A*1+数字B*2
+numberOfC*3+numberOfD*4)
/字母。大小();

如果(平均值>=1&&average=2&&average=3&&average如果它们是单个字符,只需求和并除以计数:

char averageCharacter(List<String> cs) {
  int sum = 0;
  for (String c : cs) {
    sum += c.charAt(0);
  }
  return (char) (sum / cs.size());  // Potentially with different rounding.
}
charaveragecharacter(列表cs){
整数和=0;
for(字符串c:cs){
总和+=c.字符(0);
}
return(char)(sum/cs.size());//可能具有不同的舍入。
}
您可能希望以不同的方式对整数除法进行四舍五入:

  • 楼层仅为
    sum/cs.size()
  • Ceil是
    (sum+cs.size()-1)/cs.size()
  • 四舍五入是
    (sum+cs.size()/2)/cs.size()
首先: 您的代码中有一个错误: 始终调用
numberOfD++;
,因为您不使用
if
子句

我的方法是(不用写,这看起来像是你应该自己做的家庭作业):

为a-D分配一个int(比如65-68,它们的char值是多少)

  • 循环遍历字符串,将当前字符的值添加到计数器
  • 然后将计数器除以字符串中的字符数
  • 结果将是“avarage”字符的ascii值,您可以将其转换为char

假设您已验证输入(即列表中的所有条目均为有效的1个字符字母):


首先,您的代码不正确。无论字母是什么,您每次都在递增
numberOfD
。至少要进行以下更正:

        for (String letter : letters) {
        if (letter.equalsIgnoreCase("A")) {
            numberOfA++;
        } else if (letter.equalsIgnoreCase("B")) {
            numberOfB++;
        } else if (letter.equalsIgnoreCase("C")) {
            numberOfC++;
        } else 
            numberOfD++;
    }
只求unicode值的平均值如何:

    char[] letters = {'A','B','C','D'};
    int sum = 0;
    for (char c : letters) {
        sum += (int)c;
    }
    System.out.println((char)(sum/letters.length));

什么是平均字母?如果列表包含
[A,C]
答案是
B
还是未定义?
[A,D]
也是
B
,但这就是你想要的吗?那么
[Ax3,Bx2,c4,Dx1]
平均值是多少?单独使用是危险的。拿这个ascii表格:
如果(average>=1&&averageCast到
int
不是必需的,也不是真正的
count
    char[] letters = {'A','B','C','D'};
    int sum = 0;
    for (char c : letters) {
        sum += (int)c;
    }
    System.out.println((char)(sum/letters.length));