这是我的第一个Java项目。运行代码时,出现错误-java.lang.NullPointerException。 代码的本质:用户在单击按钮时在GUI中输入数据,然后在单击按钮时,代码进行处理并将结果显示回界面。 告诉我这个决定错了。非常感谢你!
DataPageController.java
<i>
package Controllers;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Modality;
import javafx.stage.Stage;
import sun.management.snmp.jvmmib.JVM_MANAGEMENT_MIBOidTable;
import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;
import static java.lang.Integer.parseInt;
import static java.lang.System.out;
public class DataPageController {
private Integer iPQd, iPTd, iPQf, iQTf, iPTf, sPQ, sTP, ixPQs, ixFP, ixFOM, ixFFS, K, iPT;
private Integer iQTd, iRR, vRR, cQRS;
private Integer chr;
// Принажатии кнопки идет сбор данных из ячеек + преобразование из текста в число
public void RunAction(ActionEvent event) {
DataPageButt.setOnAction(this::results);
}
private void results(ActionEvent action) {
// вводные данные (enter data)
//считываем данные из ячеек (get data from user)
try {
Integer age = parseInt(ageField.getText());
Integer cQRS = parseInt(cQRSField.getText());
Integer vRR = parseInt(vRRField.getText());
Integer iPQQ = parseInt(iPQQField.getText());
Integer iRR = parseInt(iRRField.getText());
Integer iST = parseInt(iSTField.getText());
Integer iQT = parseInt(iQTField.getText());
Integer tuP = parseInt(tuPField.getText());
vRR = new Integer(vRR);
cQRS = new Integer(cQRS);
// ЧСС вычисляем
iRR = new Integer(iRR);
chr = new Integer(chr);
if (iRR != null && chr != null) {
Integer chrConst = 60000;
chr = chrConst / iRR;
}
//интервал Q-Td переменная iQTd
// K зависит от chr (ЧСС) исследуемой особи
K = new Integer(K);
iQTd = new Integer(iQTd);
if (iQTd != null && K != null) {
K = chr;
if (K == 44) {
iQTd = 438;
} else if (K == 45) {
iQTd = 434;
} else if (K == 175) {
iQTd = 249;
}
}
//интервал P-Qd переменная iPQd
if (iPQd != null && iQTd != null) {
iPQd = new Integer(iPQd);
iPQd = (iQTd / 70) * 30;
}
//расчет фактических значений iPQf, iQTf, iPTf
iPQf = new Integer(iPQf);
iPQQ = new Integer(iPQQ);
iQTf = new Integer(iQTf);
iQT = new Integer(iQT);
if (iPQf != null && iPQQ != null && iQTf != null && iQT != null) {
iPQf = (iPQQ * 100) / iPQd;
iQTf = (iQT * 100) / iQTd;
}
//интервал P-Td переменная iPTd проверить правильность формулы расчета iPT
iPTd = new Integer(iPTd);
iPT = new Integer(iPT);
iPTf = new Integer(iPTf);
if (iPT != null) {
iPTd = iPQd + iQTd;
iPT = iPQQ + iQT;
iPTf = (iPT * 100) / iPTd;
}
//сегмент PQ переменная sPQ
sPQ = new Integer(sPQ);
iPQf = new Integer(iPQf);
tuP = new Integer(tuP);
if (sPQ != null && tuP != null) {
sPQ = iPQf - tuP;
}
//сегмент T-P переменная sTP
sTP = new Integer(sTP);
if (sTP != null) {
sTP = iRR - (iPQf + iQTf);
}
//индекс PQs переменная іxPQs результат в процентах
ixPQs = new Integer(ixPQs);
if (ixPQs != null && sPQ != null) {
ixPQs = (sPQ / iPQf) * 100;
}
//индекс FP переменная іxFP
ixFP = new Integer(ixFP);
iST = new Integer(iST);
if (ixFP != null) {
ixFP = (iST / iPQf) * 100;
}
//индекс FOM переменная іxFOM
ixFOM = new Integer(ixFOM);
if (ixFOM != null) {
ixFOM = (sTP / iRR) * 100;
}
//индекс FSS переменная іxFSS
ixFFS = new Integer(ixFFS);
iPTf = new Integer(iPTf);
if (ixFFS != null) {
ixFFS = (iPQf / iPTf) * 100;
}
// запиливаем данные в ячейки
} catch (Exception e) {
out.println(e);
}
}
// open new window for results
//Запуск второго окна по нажатию кнопки "Next"
public void openResultPage(ActionEvent event) throws IOException {
Parent root1 = FXMLLoader.load(Main.class.getResource("/Views/ResultPage.fxml"));
Stage secondStage = new Stage();
secondStage.initModality(Modality.APPLICATION_MODAL);
secondStage.setTitle("Result Application");
secondStage.setScene(new Scene(root1, 600, 600));
secondStage.show();
// public void setResources (ResourceBundle resources){
// this.resources = resources;
// set results to user GUI
//try {
//ERROR in THIS BLOCK CODE
sPQFieldS.setText(String.valueOf(sPQ));///eror on this place
ixFOMFieldS.setText(String.valueOf(ixFOM));
iPQdFieldS.setText(String.valueOf(iPQd));
iQTdFieldS.setText(String.valueOf(iQTd));
cQRSFieldS.setText(String.valueOf(cQRS));
sTPFieldS.setText(String.valueOf(sTP));
іxFPFieldS.setText(String.valueOf(ixFP));
iPTfFieldS.setText(String.valueOf(iPTf));
iRRFieldS.setText(String.valueOf(iRR));
vRRFieldS.setText(String.valueOf(vRR));
iQTfFieldS.setText(String.valueOf(iQTf));
}
}
</i>
由以下原因引起:java.lang.NullPointerException 在Controllers.DataPageController.openResultPage(DataPageController.java:532) ... 58更多