因此,我正在创建一个程序,该程序将根据给定的作业和测试成绩以及他们在该年级中所占的百分比来确定最后一个学期的班级成绩。单个学生的成绩和百分比信息将在一行上给出。太好了,我只是一个问题:

        q1 = input.nextInt();
        q1p = input.nextDouble();
        q2 = input.nextInt();
        q2p = input.nextDouble();
        q3 = input.nextInt();
        q3p = input.nextDouble();

        l1 = input.nextInt();
        l1p = input.nextDouble();
        l2 = input.nextInt();
        l2p = input.nextDouble();
        l3 = input.nextInt();


有没有更好的方法来简化int和double的输入混乱?

最佳答案

从您的输入变量中可以看到,看来您正在使用Scanner API,对吗?如果是这样的话,那么您可以使用简单的外观来完成一些不错的工作,并且扫描仪接下来会检查条件,以确认是否存在要读取的输入。最后,要检测输入是双精度还是整数,我们将进行简单检查以确保!

Collection<Integer> integers= new ArrayList<>();
Collection<Double> doubles = new ArrayList<>();

while(input.hasNext())
{

 if (input.hasNextInt()) {
     integers.add(input.nextInt());
}else if(input.hasNextDouble()) {
     doubles.add(input.nextDouble());
}else
     input.next(); // will simply move to next value in the line
}


这样,您不仅不必像在使用静态用户输入的nextInt或NextDouble之前一样进行每次检查,您也不必担心。如果输入不是双精度或整数,那么列表将保持为空!

更新

更改Collection的List用法,以减少运行时的麻烦!目前,该解决方案对您而言非常有用。我还在if结构中添加了一个子句,以使hasNext == false时循环完成

09-26 15:28