2016-12-03 4 views
-2

私はJavaコードをうまく書きましたが、まだexpectionエラーが出ていると思います。配列の選択肢を集計する方法<integer>の値がJavaFX

これはコードです:

すべての手順は、私が問題にして、コードの部分にまっすぐに行かせ、会いました。

Int sumofc = 0; 
VBox vlay = new VBox(10); 

ChoiceBox<Integer> c1[] = new ChoiceBox[10] 
For (int x=0;x<10;x++){ 
    c1[x] = new ChoiceBox<>(); 
    C1[x].getItems().add(1); 
    C1[x].getItems().add(2); 
    C1[x].getItems().add(3); 
    Vlay.getChildren().add(c1[x]); 
    sumofc += c1[x].getValue(); 
} 

sumofcは値を追加していません。

+0

これらの大文字/小文字の間違いは、私が推測するような誤植ですか? – fabian

+0

'sumofc'で期待していることが分かっていると、私たちはあなたを助けてくれるでしょう。 – crazyhatfish

答えて

0

シーンに値を追加する前に、選択ボックスから値を読み込みます。これは、ユーザが何らかの形でChoiceBoxと対話していないことを意味します。その代わりに、ユーザがコントロールと意味のあるやり方で対話したときに、たとえば、別の値を選択してください。それはこれらの事実を考慮すると

sumofc += c1[x].getValue().intValue(); 

に同等なので、あなたがこのようなコードを書き換えることができ、自動的にVHS版しようとすると、

さらに、デフォルトで選択された値は、NullPointerException原因nullです:

VBox vlay = new VBox(10); 

ChoiceBox<Integer> c1[] = new ChoiceBox[10]; 

InvalidationListener listener = o -> { 
    int sumofc = 0; 
    for (ChoiceBox<Integer> cb : c1) { 
     Integer value = cb.getValue(); 
     if (value != null) { 
      sumofc += value; 
     } 
    } 

    // do something with sumofc 
    System.out.println(sumofc); 
}; 

for (int x = 0; x < c1.length; x++) { 
    c1[x] = new ChoiceBox<>(); 
    c1[x].getItems().addAll(1, 2, 3); 
    vlay.getChildren().add(c1[x]); 
    c1[x].valueProperty().addListener(listener); 
} 
+0

btn.setOnAction(e - > system.out.println(c [0] .getValues()+ c [1] .getValues()))のように(私の "選択肢の値の合計をbtn" forループは集計を行いますが、配列choiceBoxの値を配列の整数に合計します –

関連する問題