获取Java中指定值以下的所有值

时间:2012-08-22 23:26:59

标签: java arrays

我试图获取数组中低于用户指定的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

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

3 个答案:

答案 0 :(得分:1)

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

哦,顺便说一句:查看正在使用的类的文档并且不熟悉它是总是。或者,如果你使用像eclipse这样的IDE,你可以使用自动完成功能为你提供所有可能方法的列表。

答案 1 :(得分:1)

一些事情:

  • 你的语法有点偏。它应该是System.out.println
  • list无处不在;我认为你的意思是使用values
  • 你正在使用一个数组;要访问数组中的元素,请使用定义的索引位置(在您的情况下为i)。
  • 提示:如果找到的值高于指定的值,则跳过它。您可能希望使用BigDecimal.compareTo()来帮助实现这一目标。您还必须将结果存储在某处,可能是String

答案 2 :(得分:1)

使用NavigableSet.headSet: - )

  

返回此set的部分视图,其元素严格小于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 */
}