我有一个示例问题,需要我们在两个数字之间找到10的倍数。这是我编写的代码,尽管可以正常工作,但是有没有更好的方式编写此代码?
Scanner keyboard = new Scanner(System.in);
int value = keyboard.nextInt();
int limit = keyboard.nextInt();
int div = 10;
for (;div<value;div+=10)
System.out.print("");
for (;div<=limit;div+=10)
System.out.println(div);
keyboard.close();
第一个for循环让我很烦。有什么建议么?
答案 0 :(得分:0)
使用java-8:
IntStream.rangeClosed(value, limit).filter(i -> i % 10 == 0).forEach(System.out::println);
这里value
是开始索引,limit
是结束索引。
答案 1 :(得分:0)
$collection = new \Illuminate\Database\Eloquent\Collection;
$customers->when($customers->customer_type_id === 1, function($q){
$collection->push($q->with('person'));
});
$customers->when($customers->customer_type_id === 2, function($q){
$collection->push($q->with('company'));
});
$c = $collection->flatten();
return $c;
不执行任何操作,因此您的第一个循环可以重写为:
System.out.print("")
该代码的作用是int div = 10;
for (; div < value; div += 10)
;
是div
的值,四舍五入到最接近的10的倍数。可以使用value
数学(其中除法)进行如下计算向下10圈):
int
原始代码的最小值为int div = (value + 9) / 10 * 10;
,因此,如果10
,则公式计算错误。我们可以使用三元条件运算符来解决这个问题:
value <= 0
因此,您的代码的缩写版本变为:
int div = (value <= 10 ? 10 : (value + 9) / 10 * 10);