-1

我正在尝试获取数组中低于用户指定的 BigDecimal 值的所有值。这是我到目前为止所拥有的:

class MyClass {
    public static void mymethod(BigDecimal[] values, BigDecimal uservalues) {
          for (int i = 0; i < values.length(); i++) {
              System.out.prinln(String.valueof(list.get(i)));
          }
    }
}

我不明白如何做到这一点的逻辑。

因此,可以说values具有以下值:

24.50
23.58
24.68
21.68
2.05
48.36

USER INPUT: 23

2.05
21.68

希望我的问题很清楚。任何人都可以提供任何提示吗?

4

3 回答 3

1

因为我认为这是家庭作业,所以我不会给你答案。但可以告诉你,你会感兴趣的BigDecimal#compareTo(BigDecimal)。;)

哦,顺便说一句:查看您正在使用但不熟悉的类的文档总是一个好主意。或者,如果您使用 Eclipse 之类的 IDE,您可以使用自动完成功能为您提供所有可能方法的列表。

于 2012-08-22T23:35:11.993 回答
1

一些东西:

  • 你的语法有点不对劲。应该是System.out.println
  • list不知从何而来;我想你的意思是使用values.
  • 你正在使用一个数组;要访问数组中的元素,您可以使用定义的索引位置(在您的情况下是i)。
  • 提示:如果您发现一个高于指定值的值,则跳过它。你会想用它BigDecimal.compareTo()来帮助实现这一点。您还必须将结果存储在某个地方,也许是String?
于 2012-08-22T23:39:13.907 回答
1

使用NavigableSet.headSet:-)

返回此集合中元素严格小于 的部分的视图toElement

这可能是比手动迭代和使用更简单的解决方案compareTo

/* use this in place of an array */
final NavigableSet<BigDecimal> values = new TreeSet<BigDecimal>();
/* read from the user e.g. Scanner.nextBigDecimal() */
final BigDecimal ceiling = ...;
for (final BigDecimal lower : values.headSet(ceiling)) {
  /* lower will be less than ceiling */
}
于 2012-08-22T23:48:17.613 回答