я создал программу, чтобы показать результат НОД (наибольший общий делитель) между 2 целыми числами шаг за шагом не только конечный результат в Java FXJavaFX результат этикетки не показывает цикл
здесь есть класс контроллер для него
package sample;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Alert;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.text.Text;
import javafx.scene.text.TextFlow;
import javafx.stage.Stage;
import javafx.event.ActionEvent;
import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;
public class Controller implements Initializable {
int q, r1, r2, r3, r4, r;
private Main main;
private Stage primaryStage;
public void setMain(Main main, Stage primaryStage) {
this.main = main;
this.primaryStage = primaryStage;
}
@FXML
private Label label;
@FXML
private TextFlow tf;
@FXML
private TextArea ta;
@FXML
private Text t;
@FXML
private TextField field;
@FXML
private TextField field1;
@FXML
private void handleButtonAction(ActionEvent event) {
String t1 = field.getText();
String t2 = field1.getText();
if (t1.isEmpty() || t2.isEmpty()) {
Alert alert = new Alert(Alert.AlertType.WARNING);
alert.setTitle("Warning");
alert.setHeaderText("Enter Values");
alert.setContentText("you have to enter Integer Numbers");
alert.showAndWait();
} else {
try {
r1 = Integer.parseInt(t1);
r2 = Integer.parseInt(t2);
if (r1 < r2) {
r3 = r2;
r4 = r1;
r = r3 % r4;
q = r3/r4;
String t = ("r1=" + r3 + " " + "r2=" + r4 + " " + "q=" + q + " " + "r=" + r);
String t6 = new String();
while (r != 0) {
r3 = r4;
r4 = r;
r = r3 % r4;
q = r3/r4;
t6 = "r1=" + r3 + " " + "r2=" + r4 + " " + "q=" + q + " " + "r=" + r;
System.out.println(t6);
}
String t7 = ("gcd=" + r4);
label.setText(t + "\n" + t6 + "\n" + t7 + "\n");
label.setWrapText(true);
} else {
r = r1 % r2;
q = r1/r2;
String t3 = ("r1=" + r1 + " " + "r2=" + r2 + " " + "q=" + q + " " + "r=" + r);
String t4 = new String();
//this part of code
while (r != 0) {
r1 = r2;
r2 = r;
r = r1 % r2;
q = r1/r2;
t4 = ("r1=" + r1 + " " + "r2=" + r2 + " " + "q=" + q + " " + "r=" + r);
}
String t5 = ("gcd=" + r2);
label.setText(t3 + "\n" + t4 + "\n" + t5 + "\n");
}
} catch (Exception e) {
Alert alert = new Alert(Alert.AlertType.WARNING);
alert.setTitle("Warning");
alert.setHeaderText("Values Error");
alert.setContentText("you can only enter Integer Numbers");
alert.showAndWait();
}
field.clear();
field1.clear();
}
}
public void close(){
primaryStage.close();
}
@Override
public void initialize(URL url, ResourceBundle rb){}
public void changeWindow(){
main.secondWindow();
}
}
теперь вот результат, когда я вхожу, например 26 15 здесь результат
r1=26 r2=15 q=1 r=11
r1=3 r2=1 q=3 r=0
gcd=1
, но результат должен быть таким, как это обезьяна сотки в терминале
r1=26 r2=15 q=1 r=11
r1=15 r2=11 q=1 r=4
r1=11 r2=4 q=2 r=3
r1=4 r2=3 q=1 r=1
r1=3 r2=1 q=3 r=0
1
так, как я сказал, почему лейбл показывать только конечный результат цикла не весь цикл, как терминальные показывают, что
Вы пытались отладить код? – n247s
Прямо сейчас есть слишком много кода, чтобы дать полезный ответ. Создайте [минимальный, полный и проверяемый пример] (http://stackoverflow.com/help/mcve). – n247s
Я пробовал, но без проблем –