我有def shift_sixes(num):
for i, val in enumerate(num):
if val == 6:
# shift remaining items down
for j in range(i,len(num)-1):
num[j] = num[j+1]
# add 6 at the end
num[-1] = 6
return num
print(shift_sixes([1,9,4,6,2,7,8,6,2,2,6]))
print(shift_sixes([1,2,3]))
print(shift_sixes([6]))
print(shift_sixes([3]))
存储汽车库存。我希望用户输入开始年份和结束年份,并在指定的年份范围内返回库存中的多辆汽车。我必须使用foreach循环并获得所有年份才能显示。我怎么算他们?以下是我到目前为止的内容
ArrayList
答案 0 :(得分:4)
由于您想要计算,因此对于每辆具有所需totalYear
的汽车,您应该将modelYear
增加1。即,将totalYear = year.getModelYear();
更改为
totalYear++;
顺便说一句,如果您使用的是Java 8,则可能需要使用lambdas。
答案 1 :(得分:4)
你非常接近。它会增加totalYear
和return
。像,
public int howManyBetweenTheseYears(int startYear, int endYear) {
int totalYear = 0;
for (Lamborghini year : inventory) {
int modelYear = year.getModelYear();
if ((modelYear >= startYear) && (modelYear <= endYear)) {
totalYear++;
System.out.printf("modelYear: %d, total: %d%n", modelYear,
totalYear);
}
}
return totalYear;
}
答案 2 :(得分:0)
如果您能够使用Java 8构造,则可以使用的另一种方法是流和谓词。您可以获取ArrayList的流视图,对其应用谓词,然后获取计数:
public int howManyBetweenTheseYears(int startYear, int endYear) {
return inventory.stream()
.filter((Lamborghini year) -> (modelYear >= startYear) && (modelYear <= endYear))
.count();
}
这样做是通过filter
方法从库存中获取一组符合您条件的兰博基尼对象,然后返回匹配的项目数。