Olá pessoal,
Estou começando no Java e tem uma questão no meu curso que gostaria que alguém me ajudasse, porque entra já na parte de frames e buttoms e não entendo ainda direito como funciona.
A questão é o seguinte:
Cria uma calculadora de divisão e diz o seguinte:
Você está praticando a edição de um programa desconhecido. Embora a maioria do programa pareça enigmático e você não conheça as palavras usadas no código-fonte, provavelmente encontrará coisas familiares lá.
Uma calculadora divisória gráfica (ou seja, o programa abre em uma janela) é implementada na barra de tarefas. No entanto, o programa tem um pouco de confusão, como você pode ver na figura abaixo.
Na figura:
barra com botões minimizar / maximizar / fechar janela
Número 1: [campo para digitar] [no exemplo: 3]
Número 2: [campo para digitar] [no exemplo: 2]
Botão [dividir] mostra a resposta: 3/2=1
Encontre o problema e conserte-o. Note que nesta tarefa (e outras tarefas relacionadas a interfaces de usuário) testes automáticos usam o mouse. Portanto, não use o mouse durante o teste.
Obs:
kentta = campo
teksti = texto
(infelizmente estou na Finlândia e o curso é em finlandês. traduzi o melhor que pude).
Amaria se alguém de vocês pudesse me ajudar.
O programa:
import javafx.application.Application;
import javafx.beans.value.ObservableValue;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
import java.util.Scanner;
public class Dividir extends Application {
@Override
public void start(Stage stage) {
// cria um layout e define o layout dos componentes da interface do usuário
GridPane root = new GridPane();
root.setVgap(10);
root.setHgap(5);
root.setPadding(new Insets(10));
// criao campo de texto
Label numero1Teksti = new Label(" Número 1:");
Label numero2Teksti = new Label(" Número 2:");
// cria campos onde o usuário pode inserir texto
TextField numero1Kentta = new TextField("0");
numero1Kentta.setId("numero1");
TextField numero2Kentta = new TextField("0");
numero2Kentta.setId("numero2");
// codificação copy-paste estúpida
numero1Kentta.textProperty().addListener((ObservableValue<? extends String> observable, String oldValue, String newValue) -> {
if (!newValue.matches("\\d*")) {
numero1Kentta.setText(new Integer(newValue.replaceAll("[^\\d]", "")).toString());
}
});
numero2Kentta.textProperty().addListener((ObservableValue<? extends String> observable, String oldValue, String newValue) -> {
if (!newValue.matches("\\d*")) {
numero2Kentta.setText(new Integer(newValue.replaceAll("[^\\d]", "")).toString());
}
});
// cria um campo onde o resultado do cálculo é finalmente definido
Label resultadoTeksti = new Label("");
resultadoTeksti.setId("resultado");
// cria um botão pelo qual o cálculo é feito
Button btn = new Button();
btn.setId("nappi");
btn.setText(" / ");
btn.setOnAction((e) -> {
// recupera os valores nos campos de texto e os converte em números
double numero1 = Double.parseDouble(numero1Kentta.getText());
double numero2 = Double.parseDouble(numero2Kentta.getText());
if(numero2 == 0) {
return;
}
// realiza a divisão
double resultado= numero1 / numero2;
// define o texto no campo que exibe o resultado
resultadoTeksti.setText(numero1 + " / " + numero2 + " = " + resultado);
});
// adiciona os elementos criados à interface do usuário
root.add(numero1Teksti, 0, 0);
root.add(numero1Kentta, 2, 0);
root.add(numero2Teksti, 0, 1);
root.add(numero2Kentta, 2, 1);
root.add(btn, 0, 2);
root.add(resultadoTeksti, 2, 2);
// mostra o programa
Scene scene = new Scene(root);
stage.setTitle("");
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
Scanner lukija = new Scanner(System.in);
public void divide(numero1. numero2) {
System.out.print(resultado);
}
}