如何在java中从双数组创建字符数组?
我有一个双数组,其中包含表示期中成绩的值,我需要创建一个具有相同值的字符数组,但我需要它来显示字母成绩。例如,我需要从{89.6,73.9,96.9}到{B,C,A}。以下是我目前的代码:
int numStudents = 60;
int studNum = 1;
double[] midtermGrades = new double[numStudents];
Scanner grades = new Scanner(System.in);
System.out.println("Here are the scores for the most recent test taken by your class:");
for (int i = 0; i < midtermGrades.length; i++) {
midtermGrades[i] = (60 + (double)(Math.random() * 40));
System.out.printf("Student " + studNum++ + " : " + "%.1f\n", midtermGrades[i]);
}
double total = 0;
for (int i = 0; i < midtermGrades.length; i++) {
total += midtermGrades[i];
}
double studAvg = (total / midtermGrades.length);
System.out.printf("The average grade for your class was " + "%.1f\n", studAvg);
int aboveAvg = 0;
for (int i = 0; i < midtermGrades.length; i++) {
if (midtermGrades[i] > studAvg) {
aboveAvg++;
}
}
System.out.println("There are " + aboveAvg + " students in your class who scored above the average.\n");
char[] letterGrades = new char[midtermGrades.length];
for (int i = 0; i < midtermGrades.length; i++) {
letterGrades[i] = (char)midtermGrades[i];
}
}
# 1 楼答案
另一种方法是使用ASCII表。例如,96.9的第10位是
9
,字符A
和J
的十进制值分别是65
和74
。因此,您可以用9
减去74
,得到字符A
的相应十进制值。下面的代码片段显示了如何将double
数组转换为预期的char
数组:代码片段
控制台输出
# 2 楼答案
您可以尝试使用不同的字符数组,并指定分级标准
# 3 楼答案
如果第三方库是一种选择,而装箱带来的开销可以忽略,那么最简单、最干净的解决方案就是使用com。谷歌。常见的收集来自guava的范围图
这将产生以下结果:
你需要注意的唯一一件事是范围不要重叠
# 4 楼答案
你的第一个问题是制作一个有意义的字符
数学。random()只生成0到1之间的十进制数。 问题是数学。random()是一种基本的数据类型,是一个双精度的静态数据类型,此外,字符的编号是与代码页语言字符集符号相对应的“整数”,例如字符集ISO_1152是ASCII,并且定义了少于100个与整数相对应的符号
Java默认的英语字符集是IS0_8859-1,包含类似于UTF-8的符号,从0整数到255整数不等
如果是数学的结果。如果将random()四舍五入为一个整数值,则它的基础数值将是1或0
不要使用整数,而是使用 数学可以使用round(double)并返回“long”而不是int
# 5 楼答案
首先,你必须有一个基于分数的等级映射。在下面的例子中,我有如下映射:
您应该用以下代码替换代码中的上述块
希望,这将帮助你:)