Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα παιδιά!

Αυτή εδώ είναι μια απλή εφαρμογή που βάζεις 2 αριθμούς στα TextFields πατάς το κουμπί Calculate και σου λέει σε ένα Text ποιος από τους 2 αριθμούς είναι μεγαλύτερος, μικρότερος ή αν είναι ίσος με τον άλλον.

Ο κώδικας δουλεύει, το πρόγραμμα μεταγλωττίζεται, ωστόσο θέλω να προσθέσω έλεγχο για τις περιπτώσεις που ο χρήστης είτε δεν γράψει τίποτα στα TextFields, είτε γράψει σ' αυτά κείμενο αντί για ακέραιους αριθμούς. Να του εμφανίζει δηλαδή ένα μήνυμα στο Text msg2.

Προσπάθησα να βάλω try - catch μέσα στην handle() αλλά δεν τα καταφέρνω να το κάνω να μεταγλωττιστεί έτσι. Έψαξα στο internet αλλά δεν βρήκα άκρη.

Γνωρίζει κάποιος πως μπορώ να το φτιάξω;

Ευχαριστώ!

spacer.png

// BiggestNumFX.java

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.scene.text.Text;
import javafx.scene.control.TextField;
import javafx.scene.control.Button;
import javafx.event.*;
import javafx.geometry.Pos;
import javafx.stage.Stage;

public class BiggestNumFX extends Application {
	public static void main(String[] args) {
		Application.launch(args);
	}

	@Override
	public void start(Stage stage) {
		
		Text msg = new Text("Enter 2 numbers:");
		TextField numA = new TextField();
		TextField numB = new TextField();
		Text msg2 = new Text();
		Button button = new Button("Calculate");
		VBox root = new VBox();
		root.setAlignment(Pos.CENTER);
		root.getChildren().addAll(msg, numA, numB, msg2, button);
		
		button.setOnAction(new EventHandler<ActionEvent>() {
		    @Override
		    public void handle(ActionEvent e) {
				int numberA = Integer.parseInt(numA.getText());
				int numberB = Integer.parseInt(numB.getText());
		    	
				if (numberA < numberB) {
					msg2.setText("1st number is smaller than 2nd");
				}
				else if (numberA > numberB) {
					msg2.setText("1st number is greater than 2nd");
				}
				else {
					msg2.setText("Two numbers are equal");
				}
		    }
		});
		
		Scene scene = new Scene(root, 400, 200);
		stage.setScene(scene);
		stage.setTitle("Compare numbers");
		stage.show();
	}
}

 

  • Λύση
Δημοσ. (επεξεργασμένο)

Φίλε cvb~, καλημέρα !

 Σου γράφω σ' ένα μικρό διάλειμμα απ' τη δουλειά και δεν έχω πολύ χρόνο. Το πρόγραμμα που έχεις φτιάξει βασίζεται στο JavaFX. Στον υπολογιστή της δουλειάς, δυστυχώς, δεν έχω δικαίωμα να εγκαθιστώ δικά μου components χωρίς την άδεια των ανωτέρων, οπότε επέλεξα να μην εγκαταστήσω εδώ το JavaFX.
 Έγραψα μια σχεδόν πανομοιότυπη ρουτίνα με τη δική σου, η οποία όμως βασίζεται στο Swing αντί του JavaFX. Έχω ενσωματώσει τα try-catch blocks για τη διαχείρηση της περίπτωσης λανθασμένης εισόδου στοιχείων η παράλειψης στοιχείων, όπως ακριβώς ζήτησες.

Ελπίζω να βοήθησα λίγο,

Φιλικά,

Ο Άσπρος Γάτος

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class BiggerNumber extends JFrame {

   
    private JTextField msg1, msg2;
    private JButton compareButton;
    private JLabel resultLabel;

    public BiggerNumber() {
        setTitle("Number Comparison");
        setSize(300, 200);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new FlowLayout());
    msg1 = new JTextField(10);
        msg2 = new JTextField(10);
        compareButton = new JButton("Compare");
        resultLabel = new JLabel("Result: ");
    add(new JLabel("Enter first number:"));
        add(msg1);
        add(new JLabel("Enter second number:"));
        add(msg2);
        add(compareButton);
        add(resultLabel);

        
        compareButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                compareNumbers();
            }
        });
    }

    private void compareNumbers() {
        try {
            String input1 = msg1.getText();
            String input2 = msg2.getText();
    if (input1.isEmpty() || input2.isEmpty()) {
                throw new IllegalArgumentException("Please enter both numbers.");
            }

            // Convert the inputs to numbers
            double num1 = Double.parseDouble(input1);
            double num2 = Double.parseDouble(input2);

            if (num1 > num2) {
                resultLabel.setText("Result: " + num1 + " is bigger.");
            } else if (num1 < num2) {
                resultLabel.setText("Result: " + num2 + " is bigger.");
            } else {
                resultLabel.setText("Result: Both numbers are equal.");
            }

        } catch (NumberFormatException ex) {
            resultLabel.setText("Result: Invalid input. Please enter valid numbers.");
        } catch (IllegalArgumentException ex) {
            resultLabel.setText("Result: " + ex.getMessage());
        }
    }

    public static void main(String[] args) {
        
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new BiggerNumber().setVisible(true);
            }
        });
    }
}

 

 

BiggerNumber.java

Επεξ/σία από White_Cat
  • Thanks 1

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...