nwd w okienku

0

Jak poprawic poniższy kod w javie aby obliczał najwiękzsy wspólny dzielnik 2 liczb.Obecny kod tylko przepisuje wartość z pierwszej kratki a nie liczy.

import java.awt.*;

public class FirstApp extends Frame
{
TextField a,b;
Label l1,l2;
Button p;

FirstApp (String s ) { super(s);}
public void init(){
resize(600,400);
setLayout(new FlowLayout(FlowLayout.CENTER));
a= new TextField(6);add(a);
b= new TextField(6);add(b);
p= new Button ("NWP");add(p);
l1=new Label("Najwiekszy wspólny dzielnik dwóch liczb to:");
l1.setBackground(new Color(200,200,200));
l2=new Label();
add(l1);add(l2);
}

public boolean handleEvent (Event e){
if (e.target==p){
l2.setText(a.getText());
return true;
}
return false;
}

public static void main(String args[]) {

/* Program wyliczający NWD dwóch liczb

*/

  public void main(String args[]) 

{
int a=Integer.parseInt(args[0]);
int b=Integer.parseInt(args[1]);
int c; // zmienna pomocnicza

            while (b != 0) { 
            c = a % b;          // % reszta z dzielenia 
            a = b; 
            b = c; 
    } 
             System.out.println(a); 

  } 

FirstApp a= new FirstApp("Największy wspólny dzielnik dwóch liczb");
a.init();
a.show();
}

0

Przyznam Ci się szczerze, że Twój program wyrzucił mi tyle błędów, że nie chciało mi sie nawet go poprawiać.
1)Po pierwsze Nie deklaruj i nie implementoj funkcji w innej funkcji
2)Po drugie funkcja main(String[] args) mówiąc niezbyt profesjonalnie tak jakby staruje program- jak zadeklarujesz 2 takie funkcje(co i tak Ci sie nie skompiluje) skad wirtualna maszyna ma wiedzieć którą z nich wywołać
3)Po trzecie gdzie masz obsługe zdarzenia - naciśniecie przycisku - napeno nie robi tego funkcja:
public boolean handleEvent (Event e){

if (e.target==p){
l2.setText(a.getText());
return true;
}
return false;
}

4)jest jeszcze kilka bledow, ale te powyżej sa chyba najpowazniejsze. Rozumie, ze dopiero zaczynasz sie uczyc Javy i proponuje Ci zaczac od nieco prostrzych rzeczy

Napisalem Ci program który korzysta ze swinga (nie jak u Ciebie z awt) i liczy to co chcesz jakbys miał jakies pytania to pisz na [email protected]

// oto kod

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

class FirstApp extends JFrame implements ActionListener{

    JTextField t1,t2;
    JButton b;
    JLabel l1,l2;

    public static void main(String[] args){
        new FirstApp();
    }

    FirstApp(){
        super("Najwiekszy wspolny dzielnik");
        setLayout(new FlowLayout(FlowLayout.CENTER));
        this.setPreferredSize(new Dimension(250,150));

        b=new JButton("Oblicz");
        t1= new JTextField(6);
        t2= new JTextField(6);
        l1=new JLabel();
        l1.setBackground(new Color(200,200,200));
        b.addActionListener( this);

        Container c=getContentPane();

        c.add(t1);
        c.add(t2);
        c.add(b);
        c.add(l1);

        pack();
        setVisible(true);
    }

    public void actionPerformed(ActionEvent e){
        String s=e.getActionCommand();
        if(s=="Oblicz"){
            String s1=t1.getText();
            String s2=t2.getText();

            int i1=Integer.parseInt(s1);
            int i2=Integer.parseInt(s2);
            l1.setText("Wynik: "+najwiekszy(i1,i2));

        }

    }

    private String najwiekszy(int i1, int i2) {
        String pomoc;
        int p;
        while(i2!=0){
            p=i1%i2;
            i1=i2;
            i2=p;
        }
        pomoc =String.valueOf(i1);
        return pomoc;
    }
}

//koniec

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0