0

なぜこれが私に重みのエラーを与えているのか誰かが知っていますか?

エラー:

タイプの不一致:要素タイプのオブジェクトから文字列に変換できません

 public void viewWeightHandler(View view) {
    List weights = this.dh.selectAll();
    StringBuilder sb = new StringBuilder();
    sb.append("Previous Weights:\n");
    for (String weight : weights) {
        sb.append(weight + "\n");
    }
    Log.d("WEIGHT", "weight size - " + weights.size());
    output.setText(sb.toString());
}

出力は結果を表示するためのテキストビューです

重量はユーザーが入力したものです

重みは、生成されるリストです。

私が知る限り、これはループする必要があり、ウェイトごとにウェイトに挿入して表示する必要があります(入力が1、22、3の場合)

1

22

3

助けていただければ幸いです

4

2 に答える 2

2

(拡張されたforループを使用して)重みを反復する際にエラーが発生したと思います。

  for (List weight : weights) {
      sb.append(weight + "\n");
  }

そのように宣言することは、重みのすべての要素がリストである必要があることを意味します(したがって、反復変数もリストです)。しかし、そうではないと思います。リストがどのような要素を格納しているかは正確にはわかりませんString

    List<String> weights =      this.dh.selectAll();
    StringBuilder sb = new StringBuilder();
    sb.append("Previous Weights:\n");
    for (String weight : weights) {
        sb.append(weight + "\n");
    }

ジェネリックパラメーターなしでraw型を使用することは非常に悪い習慣であり、理解するのが難しく、コンテンツアシストを無効にし、あなたのようなエラーにつながる可能性があります(したがって、を追加しました<String>

ただし、私が修正しているエラーは、コンパイルエラーではなくClassCastException、実行時に発生します。

于 2012-04-13T09:43:57.133 に答える
1

forループを変更してみてください。

for (Object weight : weights) {
    sb.append(weight.toString() + "\n");
}

問題は、データベースからタイプとして重みを取得したことですObject。ただし、最初に何らかのキャストを行わずに、sをObjectsとして扱うことはできません。String

于 2012-04-13T09:44:42.323 に答える