所以我创建了一个程序,用于确定最终学期的课程成绩,考虑作业和考试成绩以及他们在该成绩中所占的百分比。单个学生的成绩和百分比信息将在一行中给出。 Soooo,我只有一个问题:
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&的输入混乱双??
答案 0 :(得分:1)
从输入变量中我可以看到,看起来你正在使用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之前进行每次检查,您不必担心。如果输入不是double或int,那么列表将保持为空!
<强>更新强>
更改集合列表的使用,以便在运行时减少麻烦!解决方案目前应该非常适合您。我还在if结构中添加了一个子句,以便在hasNext == false
时使循环完整答案 1 :(得分:0)
您可以使用两个数组并循环遍历它们:
int numberOfInputs = XXX;
int[] ints = new int[numberOfInputs];
double[] doubles = new double[numberOfInputs];
for (int i = 0; i < numberOfInputs; i++)
{
ints[i] = input.nextInt();
doubles[i] = input.nextDouble();
}
如果您需要它更灵活且没有(联合国)拳击问题,您可以使用Colletion
:
Collection<Integer> ints = new ArrayList<>();
Collection<Double> doubles = new ArrayList<>();
while (moreInput)
{
ints.add(input.nextInt());
doubles.add(input.nextDouble());
}
moreInput
是一种随意的条件,您需要根据自己的需要进行调整。
如果有2个int和1个double,则可以在循环中添加条件。