Java 获取列表中平均字符串的有效方法
如果列表中可能包含未定义的“a”、“B”、“C”或“D”,我必须计算列表中的平均字母数 例如,[A,C]的平均值是B 这是我的方法: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
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));