我正在创建一个java应用程序,但我遇到了问题。 这是代码。
package javastackoverflow;
import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.FlowPane;
import javafx.stage.Stage;
public class Javastackoverflow extends Application {
TextField deduct2;
Label text;
double ammount = 0.0;
@Override
public void start(Stage primaryStage) {
Button btn = new Button();
btn.setText("Apply");
text = new Label(Double.toString(ammount));
btn.setOnAction((e->{
double getamount = Double.parseDouble(deduct2.getText());
text.setText(Double.toString(getamount)+ ammount);
//this is where the program is suppose to get the amount and add it to amount, notice the + sign.
}))
;
deduct2 = new TextField();
FlowPane root = new FlowPane();
root.setAlignment(Pos.CENTER);
root.getChildren().addAll(btn,deduct2,text);
Scene scene = new Scene(root, 400, 450);
primaryStage.setTitle("Yo Stack");
primaryStage.setScene(scene);
primaryStage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}
该做什么
当用户在文本字段中输入数字时,程序被认为是 取这个数字并将其添加到ammount = 0;
我的问题
但是当使用输入新号码时,文字会变为那个号码。记住我希望它添加到醋栗数量(醋栗数量= 23;用户输入新数字)新数字= 3;我希望结果等于= 26但是现在程序显示结果3;
我的想法
我认为问题出在onAction()方法中。 我认为text.setText()方法显示输入文本字段的currant文本,而不是将其添加到ammount。
我不认为我在这行代码中使用了正确的运算符。这可能是问题的一部分。
text.setText(Double.toString(getamount)+ ammount);
注意我如何使用+符号,+将getamount添加到ammount ..或者它应该是。但是,当我将加号更改为 - 或*我收到此错误
===============================
二元运算符'*'
的错误操作数类型第一种类型:字符串
第二种类型:TextField
===============================
你可能会说我真的希望这段代码是正确的,所以如果你不明白的话请在报告之前发表评论。然后我可以快速改变它。谢谢!
答案 0 :(得分:1)
您在amount
getAmount
添加到amount = 0.0
变量
尝试将新值添加到getAmount
package javastackoverflow;
import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.FlowPane;
import javafx.stage.Stage;
public class Javastackoverflow extends Application {
TextField deduct2;
Label text;
double getamount = 0.0; //Edit 1
@Override
public void start(Stage primaryStage) {
Button btn = new Button();
btn.setText("Apply");
text = new Label(Double.toString(ammount));
btn.setOnAction((e->{
getamount += Double.parseDouble(deduct2.getText()); //Edit 2
text.setText(Double.toString(getamount));
//this is where the program is suppose to get the amount and add it to amount, notice the + sign.
}))
;
deduct2 = new TextField();
FlowPane root = new FlowPane();
root.setAlignment(Pos.CENTER);
root.getChildren().addAll(btn,deduct2,text);
Scene scene = new Scene(root, 400, 450);
primaryStage.setTitle("Yo Stack");
primaryStage.setScene(scene);
primaryStage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}