Diskuze: Dotaz

Java Java Dotaz

Avatar
Xengo
Člen
Avatar
Xengo:

Zdravím, len som si skúšal spraviť program s prevodmi medzi 2 a 10 sústavami aj s grafickým rozhraním. Program sám o sebe ide ale chcel by som zabezpečiť aby sa pri možnom vložení písmen, znakov či iných čísiel ako 1 a 0 v binárnom okne a následnom stlačení tlačítka prevodu zavolala metóda buttonAction2 a vlastne nastal "ďalší pokus".

Vedeli by ste mi prosím doporučiť niaku funkciu/spôsob v zmysle "ak obsahuje ine znaky/cisla ako (tie konkretne)" zavola sa buttonAction2() ?

V Jave len začínam.

package binar;

import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class prevod extends JFrame {

        private static final long serialVersionUID = 1L;
        static JFrame frame = new JFrame( "Debby" );
        static JButton button = new JButton( "TRANSFER" );
        static JTextField TextField1 = new JTextField();
        static JTextField TextField2 = new JTextField();
        static JLabel Label1 = new JLabel( "DECIMAL" );
        static JLabel Label2 = new JLabel( " BINARY" );
        static Font font1 = new Font("SansSerif", Font.BOLD, 20);

        public static int counter = 1;
        //      static int vstup1;
        //      static String vstup2;
        //      static int vysledok;

        public static void main(String[] args) {

                frame.setVisible(true);
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setSize(330, 240);
                frame.setResizable(false);
                frame.setLayout(null);
                frame.getContentPane().setBackground(Color.LIGHT_GRAY);

                frame.add( TextField1 );
                        TextField1.setFont(font1);
                frame.add( TextField2 );
                        TextField2.setFont(font1);
                frame.add( Label1 );
                frame.add( Label2 );
                frame.add( button );

                TextField1.setBounds(10, 30, 305, 45);
                TextField2.setBounds(10, 135, 305, 45);
                Label1.setBounds(135, 10, 60, 20);
                Label2.setBounds(135, 180, 60, 20);
                button.setBounds(90, 85 , 140, 40);

                button.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                                if( counter % 2 != 0 ){
                                        buttonAction1();
                                } else {
                                        buttonAction2();
                                }
                        }
                });
        }

        public static void buttonAction1() {
                if( TextField2.getText().equals("") ) {
                                TextField2.setText( Integer.toString( Integer.parseInt( TextField1.getText()) , 2) );

                        //      vstup1 = Integer.parseInt( TextField1.getText());
                        //      TextField2.setText( Integer.toString( vstup1 , 2) );
                }
                if( TextField1.getText().equals("") ) {
                                TextField1.setText( Integer.toString( Integer.parseInt( TextField2.getText(), 2) ) );

                        //      vstup2 = TextField2.getText();
                        //      vysledok = Integer.parseInt( vstup2 , 2);
                        //      TextField1.setText( Integer.toString( vysledok ) );
                }

                button.setText( "CLEAR" );
                counter++;
        }

        public static void buttonAction2() {
                TextField1.setText(null);
                TextField2.setText(null);

                button.setText( "TRANSFER" );
                counter++;
        }
}
 
Odpovědět 3.9.2015 23:22
Avatar
Atrament
Člen
Avatar
Odpovídá na Xengo
Atrament:

Proč je to proboha všechno statický a narvaný do metody main???

K dotazu - prostě po stlačení tlačítka převodu koukni co je v TextField2 (aspoň doufám, že to je ten správný text field, na pojmenovávání proměnných a funkcí bys měl taky zapracovat, v Javě se mimochodem tradičně pojmenovávají s malým písmenem na začátku a měly by ty názvy přímo napovídat co to je nebo co to dělá).

Takhle získej ten vstup v actionPerformed() tlačítka pro převod:

String binaryInputString = TextField2.getText();

a pak ten string prozkoumej a když tam bude něco jiného než chceš tak zavolej tu metodu buttonAction2().

Na co tam je ten counter jsem nějak nepochopil.

 
Nahoru Odpovědět 4.9.2015 12:05
Avatar
Xengo
Člen
Avatar
Xengo:

Vďaka za rady, ale práve to som sa chcel spýtať ako napr. ten String z TextField2 (určený pre binárny vstup/výstup) preskúmam? Musím všetko postupne vypísať ( 2,3,4,5...) alebo môžem niakym spôsobom zadať všetko okrem 1 a 0 zavolá metódu buttonAction2() ?

 
Nahoru Odpovědět 4.9.2015 13:43
Avatar
Atrament
Člen
Avatar
Odpovídá na Xengo
Atrament:

Možností máš véc. Např. ten string vem a procházej znak po znaku a v okamžiku kdy narazí na něco jiného než 1 nebo 0 víš, že to není binární číslo a můžeš zavolat buttonAction2().

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 4.9.2015 14:01
Avatar
vosa53
Člen
Avatar
Odpovídá na Xengo
vosa53:

Nebo třeba můžeš použít regulární výrazy, ale to co píše nad mnou bude o trochu rychlejší. Ale na validaci např. formátu emailu atd. se většinou používají právě ty regulární výrazy. :)

 
Nahoru Odpovědět 4.9.2015 14:26
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.