Java Applet
DonSTU 2004 Morgunov Y.Y.
DonSTU 2004 Morgunov Y.Y.
Èñõîäíûé òåêñò:
import java.awt.*;
import java.awt.event.*;
import java.lang.*;
class Calc extends java.applet.Applet
{
public void init()
{
setLayout(new BorderLayout());
Calculator Cr = new Calculator();
add("Center",Cr);
}}
class docalc implements ActionListener {
private double buff=0;
private double buff1=0;
private static int flag3=0;
private static int flag2=0;
private static String str_accum = "";
private static String str_num = "";
private static double accum = 0.0;
private static double num = 0.0;
private static String oper = null;
public double parseDouble(String s)
{
double g=0.0;
long f=0;
int i=0;
int j=0;
String s1="";
String s2="";
j=s.indexOf('.');
if (j>=0)
{
System.out.println(j);
s1=s.substring(j+1);
System.out.println(s1);
f=Long.parseLong(s1,10);
System.out.println(f);
s2=s.substring(0,j);
System.out.println(s2);
i=s1.length();
System.out.println(i);
g=Math.pow(10,i);
System.out.println(g);
g=f/g;
System.out.println(g);
f=Long.parseLong(s2,10);
System.out.println(f);
return (double)(g+f);
}
return g=(double)(Long.parseLong(s));}
private void setText(String s)
{
Calculator.tf.setText(s);
Calculator.tf.setCaretPosition(s.length());}
public void actionPerformed(ActionEvent e)
{
String str = e.getActionCommand();
if ((Character.isDigit(str.charAt(0)))||(str.charAt(0)=='.')) {
if ((str.charAt(0)=='.')&&(str_num.indexOf('.')==-1)){
str_num += str;
str_accum += str;
setText(str_accum);
}
else
{
if(Character.isDigit(str.charAt(0)))
{ str_num += str;
str_accum += str;
setText(str_accum);
}}}else {
if (str_num.length() >= 1) {
try{num=parseDouble(str_num);
}
catch(Exception q)
{System.out.println("Found Exception!"+q);}
str_num = "";
if (oper != null) {
setText(" ");
switch (oper.charAt(0)) {
case '+':
accum += num;
break;
case '-':
accum -= num;
break;
case '*':
accum *= num;
break;
case '/':
accum /= num;
break;}}else {
accum = num;
}
str_accum="";
setText(" ");
Calculator.tf.requestFocus();
oper = str;
}if (flag2==1)
{
str_accum="";
setText("");
oper = str;
flag2=0;
num=accum;}
if (str.equals("=")) {
Calculator.tf.requestFocus();
String s = Double.toString(accum);
setText(s);
flag2=1;
str_accum = "";
oper = null;
} }}}
class Calculator extends Panel
{docalc l;
Calculator()
{
l=new docalc();
setup(l);
}
public static TextField tf = null;
public boolean keyDown(Event evt,int key)
{key=key-48;
String st=Integer.toString(key);
System.out.println(key);
switch(key)
{case -5:st="+";
break;
case -2:st=".";
break;
case -3:st="-";
break;
case -38:st="=";
break;
case -1:st="/";
break;
case -6:st="*";
break;
}
l.actionPerformed(new ActionEvent(this,0,st));
return true;
}
private void setup(docalc dc)
{
tf = new TextField(20);
tf.setEditable(false);
tf.setBackground(Color.green);
tf.setForeground(Color.black);
GridBagConstraints gbc = new GridBagConstraints();
setLayout(new GridBagLayout());
gbc.insets = new Insets(2, 2, 2, 2);
gbc.gridx = 0;
gbc.gridy = 0;
gbc.gridwidth = 10;
gbc.anchor = GridBagConstraints.CENTER;
Panel centerPanel=new Panel();
Panel buttonPanel=new Panel();
buttonPanel.setLayout(new GridLayout(5,4,4,4));
buttonPanel.setBackground(Color.white);
centerPanel.setBackground(Color.white);
docalc buttonListener = new docalc();
Button b12 = new Button("+");
b12.addActionListener(buttonListener);
buttonPanel.add(b12);
Button b11 = new Button("--");
b11.addActionListener(buttonListener);
buttonPanel.add(b11);
Button b17 = new Button("x");
b17.addActionListener(buttonListener);
buttonPanel.add(b17);
Button b16 = new Button("/");
b16.addActionListener(buttonListener);
buttonPanel.add(b16);
Button b5 = new Button("C");
b5.addActionListener(buttonListener);
buttonPanel.add(b5);
Button b26 = new Button("=");
b26.addActionListener(buttonListener);
buttonPanel.add(b26);
centerPanel.add(tf,gbc);
setLayout(new BorderLayout());
add("Center",centerPanel);
add("South",buttonPanel);
}
}