在下面的程序中,我编写了一个程序,该程序可以读取5个学生姓名,以及每个学生的5个评分的标记。我已经在String类型的ArrayList中使用名称,并在Double类型的ArrayList中使用测验标记。但是我需要将这些测验标记加载到整数中,我不知道如何更改此
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
答案 0 :(得分:1)
这样的东西?
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的那一部分有所了解。
答案 1 :(得分:1)
Java Math库有几个静态方法,如果你想要一个快速的解决方案,它们会返回双精度数,但你可以将它们转换成这样的整数
(int)Math.floor(doubleNum); // 4.3 becomes 4
(int)Math.ceil(doubleNum); // 4.3 becomes 5
答案 2 :(得分:1)
在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