my calculator code wont work =\

This is a code i had to use directly from my Java Programming book in my chapter 6, this code does not compile and i cant seem to find my error.

import java.awt.*;

import java.awt.event.*;

import java.awt.datatransfer.*;

import java.text.DecimalFormat;

import javax.swing.JOptionPane;

publicclass Calculatorextends Frameimplements ActionListener

{

private Button keys[];

private Panel keypad;

private TextField lcd;

privatedouble op1;

privateboolean first;

privateboolean foundKey;

privateboolean clearText;

privateint lastOp;

private DecimalFormat calcPattern;

public Calculater()

{

// create an instance of the menu

MenuBar mnuBar =new MenuBar();

setMenuBar(mnuBar);

// consturct and populate the File menu

Menu mnuFile =new Menu("File",true);

mnuBar.add(mnuFile);

MenuItem mnuFileExit =new MenuItem("Exit");

mnuFile.add(mnuFileExit);

// construct and populate the Edit menu

Menu mnuEdit =new Menu("Edit",true);

mnuBar.add(mnuEdit);

MenuItem mnuEditClear =new MenuItem("Clear");

mnuEdit.add(mnuEditClear);

mnuEdit.insertSeperator(1);

MenuItem mnuEditCopy =new MenuItem("Copy");

mnuEdit.add(mnuEditCopy);

MenuItem mnuEditPaste =new MenuItem("Paste");

mnuEdit.add(mnuEditPaste);

// construct and populate the About menu

Menu mnuAbout =new Menu("About",true);

mnuBar.add(mnuAbout);

MenuItem mnuAboutCaluclator =new MenuItem("About Calculator");

mnuAbout.add(mnuAboutCalculator);

// add the ActionListener to each menu item

mnuFileExit.AddActionlistener(this);

mnuEditClear.AddActionlistener(this);

mnuEditCopy.AddActionlistener(this);

mnuEditPaste.AddActionlistener(this);

mnuAboutCalculator.AddActionlistener(this);

// assign an ActionCommand to each menu item

mnuFileExit.setActionCommand("Exit");

mnuEditClear.setActionCommand("Clear");

mnuEditCopy. setActionCommand("Copy");

mnuEditPaste.setActionCommand("Paste");

mnuAboutCalculator.setActionCommand("About");

// construct components and intialize beginning values

lcd =new TextField(20);

lcd.setEditable(false);

keypad =new Panel();

keys =new Button[16];

first =true;

op1 = 0.0;

clearText =true;

lastOp = 0;

calcPattern =new DecimalFormat("########.########");

// construct and assign captions to the Buttons

for (int i=0; i<=9; i++);

keys[i] =new Button(String.valueOf(i));

keys[10] =new Button("/");

keys[11] =new Button("*");

keys[12] =new Button("-");

keys[13] =new Button("+");

keys[14] =new Button("=");

keys[15] =new Button(".");

// set Frame and keypad layout to grid layout

setLayout(new BorderLayout());

keypad.setLayout(new GridLayout(4,4,10,10));

for (int i=7; i<=10; i++)// 7, 8, 9, divide

keypad.add(keys[i]);

for (int i=4; i<=6; i++)// 4, 5, 6

keypad.add(keys[i]);

keypad.add(keys[11]);// multiply

for (int i=1; i<=3; i++)// 1, 2, 3

keypad.add(keys[i]);

keypad.add(keys[12]);// subtract

keypad.add(keys[0]);// 0 key

for (int i=15; i>=13; i--)

keypad.add(keys[i]);// decimal point, =, add (+) keys

for (int i=0, i<keys.length; i++)

keys[i].addActionListener(this);

add(lcd, BorderLayout.NORTH);

add(keypad, BorderLayout.CENTER);

addWindowListener(

new WindowAdapter()

{

publicvoid widowClosing(WindowEvent e)

{

System.exit(0);

}

}

);

}// end of constructor method

publicvoid actionPerformed(ActionEvent e)

{

// test for menu item clicks

String arg = e.getActionCommand();

if (arg =="Exit")

System.exit(0);

if (arg =="Clear")

{

clearText =true;

first =true;

op1 = 0.0;

lcd.setText("");

lcd.requestFocus();

}

if (arg =="Copy")

{

Clipboard cb = Toolkit.getDefaultToolKit().getSystemClipboard();

StringSelection contents =new StringSelection(lcd.getText());

cb.setContents(contents,null);

}

if (arg == ("Paste")

{

Clipboard cb = Toolkit.getDefaultToolKit().getSystemClipboard();

Transferable content = cb.getContents(this);

try

{

String s = (String)content.getTransferDate(DataFlavor.stringFlavor);

lcd.setText(calcPattern.format(Double.parseDouble(s)));

}

catch (Throwable exc)

{

lcd.setText("");

}

}

if (arg == ("About")

{

String message ="Calculator ver.1.0\nOpenExhibit Software\ nCopyright 2007\nAll rights reserved";

JOptionPane.showMessageDialog(null, message,"About Calculator", JOptionPane.INFORMATION_MESSAGE);

}

// test for button clicks

foundKey =false;

// search for the clicked key

for (int o=0; i><keys.length && !foundKey; i++)

{

if(e.getSource() == keys[i])

{

foundKey =true;

switch(i)

{

// number and decimal point buttons

case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 15:

if(clearText)

{

lcd.setText("");

clearText =false;

}

lcd.setText(lcd.getText() + keys[i].getLabel());

break;

// operator buttons

case 10:case 11:case 12:case 13:case 14:

clearText =true;

if (first)// first operand

{

if(lcd.getText().length()==0) op1 = 0.0;

else op1 = Double.parseDouble(lcd.getText());

first =false;

clearText =true;

lastOp = i;// save last operator

}

else// second operand

{

switch(lastOp)

{

case 10:// divide button

op1 /= Double.parseDouble(lcd.getText));

break;

case 11:// multiply button

op1 *= Double.parseDouble(lcd.getText));

break;

case 12:// minus button

op1 -= Double.parseDouble(lcd.getText));

break;

case 13:// plus button

op1 += Double.parseDouble(lcd.getText));

break;

}// end of switch(lastOp)

lcd.setText(calcPattern.format(op1));

clearText =true;

if(i==14) first =true;// equal button

else lastOp = i;// save last operator

}// end else

break;

}// end of switch (i)

}// end of if

}// end of for

}// end of actionPerformed

publicstaticvoid main(String args[])

{

// set frame properties

Calculator f =new Calculator();

f.setTitle("Calculator Application");

f.setBounds(200,200,300,300);

f.setVisible(true);

// set image properties and add to frame

Image icon = Toolkit.getDefaultToolKit().getImage("calcImage.gif");

f.setIconImage(icon);

}// end of main

}// end of class

>

[14689 byte] By [Amanda632a] at [2007-11-26 13:47:04]
# 1
for starters the name of the constructor is wrong.mind including the compiling errors you're getting besides the obvious one i pointed out above?
youaresofakingwetoddeda at 2007-7-8 1:22:26 > top of Java-index,Java Essentials,Java Programming...
# 2

These are the compiling errors

F:\5th Term\Java Programming\Chapter 6\Calculator.java:114: ';' expected

for (int i=0, i<keys.length; i++)

^

F:\5th Term\Java Programming\Chapter 6\Calculator.java:114: ';' expected

for (int i=0, i><keys.length; i++)

^

F:\5th Term\Java Programming\Chapter 6\Calculator.java:117: ')' expected

add(lcd, BorderLayout.NORTH);

^

F:\5th Term\Java Programming\Chapter 6\Calculator.java:156: ')' expected

{

^

F:\5th Term\Java Programming\Chapter 6\Calculator.java:237: illegal start of expression

} // end of actionPerformed

^

F:\5th Term\Java Programming\Chapter 6\Calculator.java:236: ';' expected

} // end of for

^

6 errors

Tool completed with exit code 1

>

Amanda632a at 2007-7-8 1:22:26 > top of Java-index,Java Essentials,Java Programming...
# 3

you have a bunch of spelling errors in your code, i corrected about half of them so far, i will see if it runs once it's all rectified.

you should consider getting Eclipse, it's a good IDE which will give you more detailed compiling error messages. it will even underline things for you.

youaresofakingwetoddeda at 2007-7-8 1:22:26 > top of Java-index,Java Essentials,Java Programming...
# 4

this should work. enjoy.

import java.awt.*;

import java.awt.event.*;

import java.awt.datatransfer.*;

import java.text.DecimalFormat;

import javax.swing.JOptionPane;

public class Calculator extends Frame implements ActionListener

{

private Button keys[];

private Panel keypad;

private TextField lcd;

private double op1;

private boolean first;

private boolean foundKey;

private boolean clearText;

private int lastOp;

private DecimalFormat calcPattern;

public Calculator()

{

// create an instance of the menu

MenuBar mnuBar = new MenuBar();

setMenuBar(mnuBar);

// consturct and populate the File menu

Menu mnuFile = new Menu("File",true);

mnuBar.add(mnuFile);

MenuItem mnuFileExit = new MenuItem("Exit");

mnuFile.add(mnuFileExit);

// construct and populate the Edit menu

Menu mnuEdit = new Menu("Edit", true);

mnuBar.add(mnuEdit);

MenuItem mnuEditClear = new MenuItem("Clear");

mnuEdit.add(mnuEditClear);

mnuEdit.insertSeparator(1);

MenuItem mnuEditCopy = new MenuItem("Copy");

mnuEdit.add(mnuEditCopy);

MenuItem mnuEditPaste = new MenuItem("Paste");

mnuEdit.add(mnuEditPaste);

// construct and populate the About menu

Menu mnuAbout = new Menu("About", true);

mnuBar.add(mnuAbout);

MenuItem mnuAboutCalculator = new MenuItem("About Calculator");

mnuAbout.add(mnuAboutCalculator);

// add the ActionListener to each menu item

mnuFileExit.addActionListener(this);

mnuEditClear.addActionListener(this);

mnuEditCopy.addActionListener(this);

mnuEditPaste.addActionListener(this);

mnuAboutCalculator.addActionListener(this);

// assign an ActionCommand to each menu item

mnuFileExit.setActionCommand("Exit");

mnuEditClear.setActionCommand("Clear");

mnuEditCopy. setActionCommand("Copy");

mnuEditPaste.setActionCommand("Paste");

mnuAboutCalculator.setActionCommand("About");

// construct components and intialize beginning values

lcd = new TextField(20);

lcd.setEditable(false);

keypad = new Panel();

keys = new Button[16];

first = true;

op1 = 0.0;

clearText = true;

lastOp = 0;

calcPattern = new DecimalFormat("########.########");

// construct and assign captions to the Buttons

for (int i=0; i<=9; i++)

keys[i] = new Button(String.valueOf(i));

keys[10] = new Button("/");

keys[11] = new Button("*");

keys[12] = new Button("-");

keys[13] = new Button("+");

keys[14] = new Button("=");

keys[15] = new Button(".");

// set Frame and keypad layout to grid layout

setLayout(new BorderLayout());

keypad.setLayout(new GridLayout(4,4,10,10));

for (int i=7; i<=10; i++) // 7, 8, 9, divide

keypad.add(keys[i]);

for (int i=4; i<=6; i++) // 4, 5, 6

keypad.add(keys[i]);

keypad.add(keys[11]); // multiply

for (int i=1; i<=3; i++) // 1, 2, 3

keypad.add(keys[i]);

keypad.add(keys[12]); // subtract

keypad.add(keys[0]); // 0 key

for (int i=15; i>=13; i--)

keypad.add(keys[i]); // decimal point, =, add (+) keys

for (int i=0; i<keys.length; i++)

keys[i].addActionListener(this);

add(lcd, BorderLayout.NORTH);

add(keypad, BorderLayout.CENTER);

addWindowListener(

new WindowAdapter()

{

public void widowClosing(WindowEvent e)

{

System.exit(0);

}

}

);

} // end of constructor method

public void actionPerformed(ActionEvent e)

{

// test for menu item clicks

String arg = e.getActionCommand();

if (arg == "Exit")

System.exit(0);

if (arg == "Clear")

{

clearText = true;

first = true;

op1 = 0.0;

lcd.setText("");

lcd.requestFocus();

}

if (arg == "Copy")

{

Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();

StringSelection contents = new StringSelection(lcd.getText());

cb.setContents(contents, null);

}

if (arg == "Paste")

{

Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard();

Transferable content = cb.getContents(this);

try

{

String s = (String)content.getTransferData(DataFlavor.stringFlavor);

lcd.setText(calcPattern.format(Double.parseDouble(s)));

}

catch (Throwable exc)

{

lcd.setText("");

}

}

if (arg == "About")

{

String message = "Calculator ver.1.0\nOpenExhibit Software\nCopyright 2007\nAll rights reserved";

JOptionPane.showMessageDialog(null, message,"About Calculator", JOptionPane.INFORMATION_MESSAGE);

}

// test for button clicks

foundKey = false;

// search for the clicked key

for (int i=0; i><keys.length && !foundKey; i++)

{

if(e.getSource() == keys[i])

{

foundKey = true;

switch(i)

{

// number and decimal point buttons

case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 15:

if(clearText)

{

lcd.setText("");

clearText = false;

}

lcd.setText(lcd.getText() + keys[i].getLabel());

break;

// operator buttons

case 10: case 11: case 12: case 13: case 14:

clearText = true;

if (first) // first operand

{

if(lcd.getText().length()==0) op1 = 0.0;

else op1 = Double.parseDouble(lcd.getText());

first = false;

clearText = true;

lastOp = i; // save last operator

}

else // second operand

{

switch(lastOp)

{

case 10: // divide button

op1 /= Double.parseDouble(lcd.getText());

break;

case 11: // multiply button

op1 *= Double.parseDouble(lcd.getText());

break;

case 12: // minus button

op1 -= Double.parseDouble(lcd.getText());

break;

case 13: // plus button

op1 += Double.parseDouble(lcd.getText());

break;

} // end of switch(lastOp)

lcd.setText(calcPattern.format(op1));

clearText = true;

if(i==14) first = true; // equal button

else lastOp = i; // save last operator

} // end else

break;

} // end of switch (i)

} // end of if

} // end of for

} // end of actionPerformed

public static void main(String args[])

{

// set frame properties

Calculator f = new Calculator();

f.setTitle("Calculator Application");

f.setBounds(200,200,300,300);

f.setVisible(true);

// set image properties and add to frame

Image icon = Toolkit.getDefaultToolkit().getImage("calcImage.gif");

f.setIconImage(icon);

}// end of main

} // end of class

>

youaresofakingwetoddeda at 2007-7-8 1:22:26 > top of Java-index,Java Essentials,Java Programming...
# 5

thanks for the code but when i run it this error comes up =x

F:\5th Term\Java Programming\Chapter 6\Calculator.java:180: > expected

for (int i=0; i><keys.length && !foundKey; i++)

^

F:\5th Term\Java Programming\Chapter 6\Calculator.java:180: illegal start of expression

for (int i=0; i><keys.length && !foundKey; i++)

^

2 errors

Tool completed with exit code 1>

Amanda632a at 2007-7-8 1:22:26 > top of Java-index,Java Essentials,Java Programming...
# 6

> This is a code i had to use directly from my Java

> Programming book in my chapter 6, this code does not

> compile and i cant seem to find my error.

You need a new Java Programming book. That's just awful.

For starters, you should replace every instance of

arg == "?"

with

arg.equals("?")

es5f2000a at 2007-7-8 1:22:26 > top of Java-index,Java Essentials,Java Programming...
# 7

go to those lines and remove ">" from "><" in the for loop

but i'm pretty sure i already rectified them.

> thanks for the code but when i run it this error

> comes up =x

>

> F:\5th Term\Java Programming\Chapter

> 6\Calculator.java:180: > expected

> for (int i=0; i><keys.length && !foundKey;

> i++)

> ^

> 6\Calculator.java:180: illegal start of expression

> for (int i=0; i><keys.length && !foundKey;

> i++)

> ^

Message was edited by:

youaresofakingwetodded

youaresofakingwetoddeda at 2007-7-8 1:22:26 > top of Java-index,Java Essentials,Java Programming...
# 8
Java doesn't have a >< symbol. It should be <.
es5f2000a at 2007-7-8 1:22:26 > top of Java-index,Java Essentials,Java Programming...
# 9
funny thing is i dont have that in my program at all...it only shows up when i copy and paste it =x
Amanda632a at 2007-7-8 1:22:26 > top of Java-index,Java Essentials,Java Programming...
# 10
ooo nvm i found it tyvm for all the help :)
Amanda632a at 2007-7-8 1:22:26 > top of Java-index,Java Essentials,Java Programming...
# 11
> go to those lines and remove ">" from "><" in the for> loop> > but i'm pretty sure i already rectified them.It's a known bug in the forum software that a "less than" sign sometimes gets formatted as "><".
doremifasollatidoa at 2007-7-8 1:22:26 > top of Java-index,Java Essentials,Java Programming...
# 12

> > go to those lines and remove ">" from "><" in the

> for

> > loop

> >

> > but i'm pretty sure i already rectified them.

>

> It's a known bug in the forum software that a "less

> than" sign sometimes gets formatted as "><".

ah, that explains it, i thought i was going crazy for a moment...which i actually am come to think of it..

youaresofakingwetoddeda at 2007-7-8 1:22:26 > top of Java-index,Java Essentials,Java Programming...