在下面的程序中,我编写了一个程序,该程序以5个学生的名字阅读,以及每个学生5个测验的分数。我已经加载了字符串类型的数组列表中的名称和双精度类型的数组列表中的测验标记。但是我需要将这些测验标记加载到整数中,但我不确定如何更改它
import java.util.Scanner;
import java.util.ArrayList;
public class onemoretime
{
public static final double MAX_SCORE = 15 ;
public static final int NAMELIMIT = 5;
public static void main(String[] args)
{
ArrayList<String> names = new ArrayList<>();
ArrayList<Double> averages = new ArrayList<>(); //line that needs to become a Integer ArrayList
Scanner in = new Scanner(System.in);
for (int i = 0; i < NAMELIMIT; i++)
{
String line = in.nextLine();
String[] words = line.split(" ");
String name = words[0] + " " + words[1];
double average = findAverage(words[2], words[3], words[4], words[5], words[6]);
System.out.println("Name: " + name + " Quiz Avg: " + average);
names.add(name);
averages.add(average);
}
}
public static double findAverage(String a, String b, String c, String d, String e)
{
double sum = Double.parseDouble(a) + Double.parseDouble(b) + Double.parseDouble(c) + Double.parseDouble(d) + Double.parseDouble(e);
return (sum / NAMELIMIT);
}
}
对于输入:
Sally Mae 90 80 45 60 75
Charlotte Tea 60 75 80 90 70
Oliver Cats 55 65 76 90 80
Milo Peet 90 95 85 75 80
Gavin Brown 45 65 75 55 80
我得到了正确的输出
Name: Sally Mae Quiz Avg: 70.0
Name: Charlotte Tea Quiz Avg: 75.0
Name: Oliver Cats Quiz Avg: 73.2
Name: Milo Peet Quiz Avg: 85.0
Name: Gavin Brown Quiz Avg: 64.0
像这样的东西?
List<Double> dValues = new ArrayList<>();
// not shown: add your double values to the dValues list
List<Integer> iValues = dValues.stream()
.map(p -> p.intValue())
.collect(Collectors.toList());
// or the equivalent
// List<Integer> iValues = dValues.stream()
// .map(Double::intValue)
// .collect(Collectors.toList());
注意:intValue() 方法可能不会像你期望的那样四舍五入,所以你可能不得不对 lambda 的那部分进行更花哨的处理。
Java Math 库有几个静态方法,如果你想要一个快速的解决方案,它们返回双精度,但你可以像这样将它们转换为整数
(int)Math.floor(doubleNum); // 4.3 becomes 4
(int)Math.ceil(doubleNum); // 4.3 becomes 5
在 Java 中,如果将整数除以整数,则得到一个整数,结果将是精度损失,例:-
Integer division 8 / 5 = 1
Double division 8.0 / 5.0 = 1.6
Mixed division 8.0 / 5 = 1.6
所以,如果你仍然想把输入更改为整数,酷!,继续把你的输入更改为整数。如果您想要精度,只需确保其中一个输入是双倍的。例如:-
Input = saumyaraj zala 45 25 14 78 45
Output = Name: saumyaraj zala Quiz Avg: 41.4