因此,我正在创建一个程序,将确定最后一个学期的班级成绩,给定的作业和测试成绩,以及他们在该年级中所占的百分比。一个学生的年级和百分比信息将在一条线上给出。所以,我只有一个问题:
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();
有没有更好的方法来简化整双输入的混乱??
发布于 2015-10-17 16:02:30
从您的输入变量中可以看出,您正在使用Scanner,对吗?如果是这样的话,你可以用一个简单的外观来做一些很好的事情,接下来的条件是通过扫描仪来验证是否有要读取的输入。最后,为了检测输入是双输入还是整数,我们将做一个简单的检查,以确保!
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之前的静态用户输入,您也不必担心。如果输入不是双或int,那么列表将保持为空!
更新
更改集合列表的使用,以便在运行时减少麻烦!这个解决方案目前对你来说应该是很好的解决方案。我还在if结构中添加了一个子句,以便在hasNext == false时完成循环。
发布于 2015-10-17 15:57:50
您可以使用两个数组并对它们进行循环:
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();
}
如果您需要它更灵活,并且在(Un)装箱方面没有问题,您可以使用Colletion
。
Collection<Integer> ints = new ArrayList<>();
Collection<Double> doubles = new ArrayList<>();
while (moreInput)
{
ints.add(input.nextInt());
doubles.add(input.nextDouble());
}
moreInput
是一个任意的条件,您需要根据您的需要进行调整。
例如,如果有2个ints和1个double,则可以在循环中添加条件。
https://stackoverflow.com/questions/33192827
复制相似问题