need help making my calculator, it say error in intitalize package calculator; i
ID: 3725551 • Letter: N
Question
need help making my calculator, it say error in intitalize
package calculator;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
public class FXMLDocumentController implements Initializable{
@FXML
private TextField displayTextField;
@Override
public void initialize(URL url,ResourceBundle rb) {
//The following will force the field to be numeric only
//Limits imposed are an optional minus sign, up to 7 significant
//digits, an optional decimal point follwed by up to 4 digits.
displayTextField.textProperty().addListener((
ObservableValue<? extends String> observable, String oldValue,
String newValue)->{
if (!newValue.matches("(\-{0,1})\d{0,7}([\.]\d{0,4})?"))
displayTextField.setText(oldValue)}
});
}
@FXML
private void seven(ActionEvent event){
displayTextField.setText(displayTextField.getText()+"7");
}
@FXML
private void eight(ActionEvent event) {
displayTextField.setText(displayTextField.getText()+"8");
}
@FXML
private void nine(ActionEvent event) {
displayTextField.setText(displayTextField.getText()+"9");
}
@FXML
private void multiply(ActionEvent event) {
double first = Double.parseDouble(firstOperand);
String secondOperand = diplayTextField.getText();
double second = 0;
if (operandValid(secondOperand)) {
second = Double.parseDouble(secondOperand);
}
double result = first * second;
firstOperand = "" + result;
displayTextField.setText(firstOperand);
}
@FXML
private void four(ActionEvent event) {
displayTextField.setText(displayTextField.getText()+"4");
}
@FXML
private void five(ActionEvent event) {
displayTextField.setText(displayTextField.getText()+"5");
}
@FXML
private void six(ActionEvent event) {
displayTextField.setText(displayTextField.getText()+"6");
}
@FXML
private void divide(ActionEvent event) {
double first = Double.parseDouble(firstOperand);
String secondOperand= displayTextField.getText();
double seond = 0;
if (second !=0){
double result = first / second;
result = Math.round(result *4.0)/4.0 ;
firstOperand = "" + result;
displayTextField.setTExt(""+ firstOperand);
} else {
firstOperand = "0";
displayTextField.setText("");
}
}
@FXML
private void one(ActionEvent event) {
displayTextField.setText(displayTextField.getText()+"1");
}
@FXML
private void two(ActionEvent event) {
displayTextField.setText(displayTextField.getText()+"2");
}
@FXML
private void three(ActionEvent event) {
displayTextField.setText(displayTextField.getText()+"3");
}
@FXML
private void subtract(ActionEvent event) {
double first = Double.parseDouble(firstOperand);
String secondOperand = displayTextField.getText();
double second = 0;
if (operandValid(secondOperand)) {
second = Double.parseDouble(secondOperand);
}
double result = first - second;
firstOperand = "" + result;
displayTextField.setText(firstOperand);
}
@FXML
private void zero(ActionEvent event) {
displayTextField.setText(displayTextField.getText()+"0");
}
@FXML
private void point(ActionEvent event) {
}
private String firstOperand= "0";
@FXML
private void enter(ActionEvent event) {
firstOperand= displayTextField.getText();
displayTextField.setText("");
}
private boolean operandValid(String operand){
if (operand.contains("0") ||
operand.contains("1") ||
operand.contains("2") ||
operand.contains("3") ||
operand.contains("4") ||
operand.contains("5") ||
operand.contains("6") ||
operand.contains("7") ||
operand.contains("8") ||
operand.contains("9"))
return true;
return false;
}
@FXML
private void add(ActionEvent event) {
double first = Double.parseDouble(firstOperand);
String secondOperand = displayTextField.getText();
double second = 0;
if (operandValid(secondOperand)) {
second = Double.parseDouble(secondOperand);
}
double result = first + second;
firstOperand = "" + result;
displayTextField.setText(firstOperand);
}
@FXML
private void changeSign(ActionEvent event) {
String display = displayTextField.getText();
if (display.startsWith("-"))
display = display.substring(1);
else
display = "-"+ display;
displayTextField.setText(display);
}
}
Explanation / Answer
I have correct all the error , I hope it will work now......
/**************************Code*********************/
import java.net.URL;
import java.util.ResourceBundle;
import javafx.beans.value.ObservableValue;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.TextField;
public class FXMLDocumentController implements Initializable {
@FXML
private TextField displayTextField;
@Override
public void initialize(URL url,ResourceBundle rb) {
//The following will force the field to be numeric only
//Limits imposed are an optional minus sign, up to 7 significant
//digits, an optional decimal point follwed by up to 4 digits.
// displayTextField.textProperty().addListener((
// ObservableValue<? extends String> observable, String oldValue,
// String newValue)->{
// if (!newValue.matches("(\-{0,1})\d{0,7}([\.]\d{0,4})?"))
// displayTextField.setText(oldValue)});
displayTextField.textProperty().addListener((ObservableValue<? extends String> observable, String oldValue,String newValue)->{
if(!newValue.matches("(\-{0,1})\d{0,7}([\.]\d{0,4})?")) {
displayTextField.setText(oldValue);
}
});
}
@FXML
private void seven(ActionEvent event) {
displayTextField.setText(displayTextField.getText() + "7");
}
@FXML
private void eight(ActionEvent event) {
displayTextField.setText(displayTextField.getText() + "8");
}
@FXML
private void nine(ActionEvent event) {
displayTextField.setText(displayTextField.getText() + "9");
}
@FXML
private void multiply(ActionEvent event) {
double first = Double.parseDouble(firstOperand);
String secondOperand = displayTextField.getText();
double second = 0;
if (operandValid(secondOperand)) {
second = Double.parseDouble(secondOperand);
}
double result = first * second;
firstOperand = "" + result;
displayTextField.setText(firstOperand);
}
@FXML
private void four(ActionEvent event) {
displayTextField.setText(displayTextField.getText() + "4");
}
@FXML
private void five(ActionEvent event) {
displayTextField.setText(displayTextField.getText() + "5");
}
@FXML
private void six(ActionEvent event) {
displayTextField.setText(displayTextField.getText() + "6");
}
@FXML
private void divide(ActionEvent event) {
double first = Double.parseDouble(firstOperand);
String secondOperand = displayTextField.getText();
double second = 0;
if (second != 0) {
double result = first / second;
result = Math.round(result * 4.0) / 4.0;
firstOperand = "" + result;
displayTextField.setText("" + firstOperand);
} else {
firstOperand = "0";
displayTextField.setText("");
}
}
@FXML
private void one(ActionEvent event) {
displayTextField.setText(displayTextField.getText() + "1");
}
@FXML
private void two(ActionEvent event) {
displayTextField.setText(displayTextField.getText() + "2");
}
@FXML
private void three(ActionEvent event) {
displayTextField.setText(displayTextField.getText() + "3");
}
@FXML
private void subtract(ActionEvent event) {
double first = Double.parseDouble(firstOperand);
String secondOperand = displayTextField.getText();
double second = 0;
if (operandValid(secondOperand)) {
second = Double.parseDouble(secondOperand);
}
double result = first - second;
firstOperand = "" + result;
displayTextField.setText(firstOperand);
}
@FXML
private void zero(ActionEvent event) {
displayTextField.setText(displayTextField.getText() + "0");
}
@FXML
private void point(ActionEvent event) {
}
private String firstOperand = "0";
@FXML
private void enter(ActionEvent event) {
firstOperand = displayTextField.getText();
displayTextField.setText("");
}
private boolean operandValid(String operand) {
if (operand.contains("0") || operand.contains("1") || operand.contains("2") || operand.contains("3")
|| operand.contains("4") || operand.contains("5") || operand.contains("6") || operand.contains("7")
|| operand.contains("8") || operand.contains("9"))
return true;
return false;
}
@FXML
private void add(ActionEvent event) {
double first = Double.parseDouble(firstOperand);
String secondOperand = displayTextField.getText();
double second = 0;
if (operandValid(secondOperand)) {
second = Double.parseDouble(secondOperand);
}
double result = first + second;
firstOperand = "" + result;
displayTextField.setText(firstOperand);
}
@FXML
private void changeSign(ActionEvent event) {
String display = displayTextField.getText();
if (display.startsWith("-"))
display = display.substring(1);
else
display = "-" + display;
displayTextField.setText(display);
}
}
Thanks a lot, Please let me know if you have any problem..............
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.