Potrzebuję pomocy przy Aplecie

0

Mam prośbę, czy ktoś mógłby mi pomóc w implementacji przeliczania liczb w moim aplecie?? Pobieram liczbę z pola tekstowego, następnie ją zamieniam ze stringa na liczbę, ale nie umię zaimplementować jej przeliczenia :( Będę wdzięczny za wszelką pomoc.Oto kod programu:
/**

  • @(#)kalkulator.java
  • kalkulator Applet application
  • @Author
  • @version 1.00 2007/5/23
    */

import java.awt.;
import java.applet.
;
import java.awt.event.*;
public class kalkulator extends Applet implements ActionListener /MouseListener/ {
int x, y, z;

TextField t1;TextField t2;TextField t3;	TextField t4;TextField t5;TextField t6;	TextField t7;TextField t8;TextField t9;

Button b1;	Button b2;	Button b3;

String s=""; String t=""; String u="";
	
public void init() {

	t1=new TextField ();
	t2=new TextField ();
	t3=new TextField ();
	
	t4=new TextField ();
	t5=new TextField ();
	t6=new TextField ();
		
	t7=new TextField ();
	t8=new TextField ();
	t9=new TextField ();

	add (t1);add (t2);add (t3);	add (t4);add (t5);add (t6);	add (t7);add (t8);add (t9);
	
	b1=new Button ("PRZELICZ");	b2=new Button ("PRZELICZ");	b3=new Button ("PRZELICZ");
	
	add (b1); add(b2);	add(b3);

	setLayout (null);
	
	t1.setBounds (175,73,200,20);
	t2.setBounds (255,130,200,20);
	t3.setBounds (200,165,200,20);
	
	b1.setBounds (400,73,100,20);
	
	t4.setBounds (175,273,200,20);
	t5.setBounds (255,330,200,20);
	t6.setBounds (205,365,200,20);
	
	b2.setBounds (400,273,100,20);
	
	t7.setBounds (190,473,200,20);
	t8.setBounds (255,530,200,20);
	t9.setBounds (200,565,200,20);
	
	b3.setBounds (400,473,100,20);
	
	
	t1.setText ("");
	t2.setText ("");
	t3.setText ("");
	
	t4.setText ("");
	t5.setText ("");
	t6.setText ("");
	
	t7.setText ("");
	t8.setText ("");
	t9.setText ("");		
	
	t1.addActionListener (this);
	b2.addActionListener (this);
	
	t4.addActionListener (this);
	b1.addActionListener (this);
	
	t7.addActionListener (this);
	b3.addActionListener (this);
	
	//addMouseListener (this);

}

/* public void mouseClicked (MouseEvent me) {
};
public void mousePressed (MouseEvent me) {
};
public void mouseReleased (MouseEvent me) {
};
public void mouseEntered (MouseEvent me) {
};
public void mouseExited (MouseEvent me) {
};*/

public void actionPerformed (ActionEvent e) {
	
s=t1.getText();
x=Integer.parseInt (s);
s=String.valueOf (x);
t2.setText (s);

// t3.setText (s);
repaint ();

t=t4.getText ();
y=Integer.parseInt (t);
t=String.valueOf (y);
t5.setText (t);
//t6.setText (t);
repaint ();
		
u=t7.getText ();
z=Integer.parseInt (u);
u=String.valueOf (z);
t8.setText (u);

// t9.setText (u);
repaint ();
}

public void paint (Graphics g) 	{
	
		g.setColor(new Color (51,225,169));
		g.fillRect (0,0,560,700);
		
		g.setFont (new Font("Serif", Font.BOLD, 17));
		g.setColor (Color.yellow);
		g.drawString("Wpisz liczbę w odpowiednie polie i kliknij ", 60, 30 );
		
		
		g.setFont (new Font("Serif", Font.BOLD|Font.ITALIC, 17));
		g.setColor (new Color(128,0,128));
		g.drawString("PRZELICZ", 380, 30 );
		
		g.setFont (new Font("Serif",Font.PLAIN,14));
		g.setColor (Color.blue);
		
		g.drawString ("Wpisz liczbę dziesiętną:",30,86);
		g.drawString ("Podana przez Ciebie liczba jest równa:",30,145);
		g.drawString ("w systemie binarnzm, oraz:",30,180);
		g.drawString ("w systemie szesnastkowym.",30,215);
		
		g.drawString ("Wpisz liczbę binarną:",30,286);
		g.drawString ("Podana przez Ciebie liczba jest równa:",30,345);
		g.drawString ("w systemie dziesiętnym, oraz:",30,380);
		g.drawString ("w systemie szesnastkowym.",30,415);
		
		g.drawString ("Wpisz liczbę szesnastkową:",30,486);
		g.drawString ("Podana przez Ciebie liczba jest równa:",30,545);
		g.drawString ("w systemie binarnzm, oraz:",30,580);
		g.drawString ("w systemie dziesiętnym.",30,615);
					
		g.setColor(new Color(180,0,128));
		g.drawLine(30,35,520,35);
		
		g.drawLine(30,235,520,235);
		
		g.drawLine(30,435,520,435);
		
		g.drawLine(30,635,520,635);
							
}

}

0

Klasa Integer umożliwia bardzo łatwe przeliczenie z systemu dziesiętnego na binarny i heksadecymalny (metody toHexString i toBinaryString, obie przyjmują jako parametr liczbę).
Pozdrawiam

0

Dziękuję za podpowiedź. Owszem zgadza się to wszystko co Pan napisał, ale w związku z tym mam teraz kolejne pytanie: Jak zmusić program, aby wyświetlał przeliczoną wartość w danym polu tekstowym??

0

OK. Doznałem (nazwijmy to :) olśnienia i jakoś się z przeliczaniem z dziesiętnych na binarne i szesnastkowe uporałem. Ale teraz mam jeszcze kłopot z przeliczeniem odwrotnym: z binarnych na dziesiętne i szesnastkowe oraz z szesnastkowych na dziesiętne i binarne. Będę wdzięczny za wszelką pomoc.

0
static int parseInt(String s, int radix) 
Parses the string argument as a signed integer in the radix specified by the second argument.

Ta funkcja zamienia stringa w liczbę. Drugim parametrem jest podstawa systemu liczbowego. Czyli jak chcesz przeliczyć z heksadecymalnego na binarny, to wywołujesz tę funkcję (radix=16). Otrzymujesz wynik w systemie dziesiętnym, a dopiero ten wynik przeliczasz na binarny.
Oczywiście podpieram się tylko dokumentacją, więc nie gwarantuję działania.
Pozdrawiam

0

Jakoś mi niestety nie wychodzi :( Znalazłem podpowiedź w necie - jest tam schemat blokowy i algorytm napisany w javascript i nie tylko, ale nie potrafię sobie go zaimplementować w aplecie :( Oto link do strony: http://www.i-lo.tarnow.pl/edu/inf/alg/num/pages/002.php. Za wszelkie rady będę bardzo wdzięczny.

0

Afish dziękuję za pomoc. Aplet napisany, działa i jestem nawet z niego bardzo zadowolony, profesorka też była :) Pokusiłem się nawet o wstawienie do niego lisy z której mogę wybierać rządaną konwersję. Jeszcze raz dzięki. Jakbyś miał kiedyś czas to wpadnij na GG to sobie pogadamy. Mój nr to: 9964720.

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