-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

使用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 に答える
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 に答える