我正在尝试按照高价和低价格范围过滤产品。这是我用
进行测试的网址http://localhost:8080/webstore/products/test?high=900&low=100
这是我的Repository(ProductRepository)
if (guess in GeneratedWords):
这是我的InMemoryProductRepository类,它有原始数据和这个方法
public interface ProductRepository {
List<Product> getProductsByPriceFilter(BigDecimal high, BigDecimal low);
}
这是我的服务(ProductService)
public List<Product> getProductsByPriceFilter(BigDecimal high, BigDecimal low){
List<Product> productsByPriceFilter = new ArrayList<Product>();
for(Product product : listOfProducts){
if((product.getUnitPrice().compareTo(high) < -1) && (product.getUnitPrice().compareTo(high)== 0) && (product.getUnitPrice().compareTo(low) > 1) && (product.getUnitPrice().compareTo(low)==0)){
productsByPriceFilter.add(product);
}
}
return productsByPriceFilter;
}
这是我的服务实现(ProductServiceImpl),它包含这个方法
public interface ProductService {
List<Product> getProductsByPriceFilter(BigDecimal high, BigDecimal low);
}
最后这是我的ProductController
public List<Product> getProductsByPriceFilter(BigDecimal high, BigDecimal low){
return productRepository.getProductsByPriceFilter(high, low);
}
但是我不断得到空白页面,没有我通过高或低的所有数据的数据。所以,我想问题取决于 InMemoryProductRepository 类中的 getProductsByPriceFilter 方法。
答案 0 :(得分:0)
你的比较中存在问题:
if((product.getUnitPrice().compareTo(high) < -1) && (product.getUnitPrice().compareTo(high)== 0) && (product.getUnitPrice().compareTo(low) > 1) && (product.getUnitPrice().compareTo(low)==0)){
如果您不能说high
,则比较结果可能小于-1
且同时等于zero
。相反,您需要或者在两个条件之间或更好<= 0
之间,而low
则需要另一种方式:
if((product.getUnitPrice().compareTo(high) <= 0) && (product.getUnitPrice().compareTo(low) >= 0))