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