Win a copy of Think Java: How to Think Like a Computer Scientist this week in the Java in General forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

how to solve the error?

 
Viji be
Greenhorn
Posts: 23
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hello All

How to solve the error in this program...
Iam getting an error in d=md.Operations();

Iam just trying to get two numbers from The applet and performing Add/Sub/Mul/Div according the button pressed.

I have to write 4 actions in a single function...so i hav used if stmt with get().

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

public class FinalThreadDemo extends JFrame implements ActionListener
{

JFrame frm;
JPanel panel;
JLabel label1;
JLabel label2
JTextField tf1;
JTextField tf2;
JButton button1;
JButton button2;
JButton button3;
JButton button4;
GridLayout gl;

public FinalThreadDemo( )
{
super("FinalThread Demo");

JFrame frm=new JFrame("Arithmetic Operations");
JPanel panel=new JPanel( );
GridLayout gl=new GridLayout(4,4);
JLabel label1=new JLabel("FirstNumber");
JLabel label2=new JLabel("Second Number");
JTextField tf1=new JTextField(10);
JTextField tf2=new JTextField(10);
JButton button1=new JButton( );
button1.setText("Add");
JButton button2=new JButton( );
button2.setText("Sub");
JButton button3=new JButton( );
button3.setText("Mul");
JButton button4=new JButton( );
button4.setText("Div");

panel.add(l1);
panel.add(l2);
panel.add(tf1);
panel.add(tf2);
panel.add(button1);
panel.add(button2);
panel.add(button3);
panel.add(button4);

panel.setLayout(gl);

frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setVisible(true);
frm.setSize(400,400);

this.getContentPane.add(panel);

public void ActionListener(actionPerformed ae)
{

public void Operations(int a,int b)
{

if(ae.getText( )==Add)
{
c=a+b;
return c;
}

if(ae.getText()==Sub)
{
c=a-b;
return c;
}

if(ae.getText( )==Mul)
{
c=a*b;
return c;
}

if(ae.getText( )==Div)
{
c=a/b;
return c;
}

}

public static void main(String args[])
{

BufferedReader keyboardInput1 = new BufferedReader(new InputStreamReader(System.in));
BufferedReader keyboardInput2 = new BufferedReader(new InputStreamReader(System.in));

int a= Integer.parseInt(keyboardInput1.readLine());
int b=Integer.parseInt(keyboardInput2readLine());

javax.swing.SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
int d;
FinalThreadDemo md=new FinalThreadDemo();
d=md.Operations(a,b);
}

});

}

}
 
Srinivasa Raghavan
Ranch Hand
Posts: 1228
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
It would be nice if you post the error you got.
 
Mark Spritzler
ranger
Sheriff
Posts: 17278
6
IntelliJ IDE Mac Spring
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Also, we have a "CODE" tag, that can be created by clicking the CODE button,
which is located under the "Add Reply" button, along with URL, BOLD, etc. buttons

This tag will enable you to keep your formatting for your code, like indentation, and makes your code readable.
The way your code is posted makes it difficult to read, and therefore, more difficult for us to help you.

Thanks

Mark
 
Ernest Friedman-Hill
author and iconoclast
Marshal
Pie
Posts: 24211
35
Chrome Eclipse IDE Mac OS X
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
The call to md.Operations() is in an anonymous Runnable class. The parameters you're passing are local variables in the surrounding methods. Under these circumstances, Java requires that such variables be "final", so making "a" and "b" final will fix that compile error.

Now, there are several other major things I want to tell you about. First of all, Integer.parseInt() will report failure by throwing a NumberFormatException; you really need to catch those instead of simply trusting that the input parameters are OK.

The second one is that Java has a firmly entrenched, but simple, set of naming conventions. Don't capitalize method names like "Operations" -- method namesand variable names should always start with a lower-case letter, while class names should always start with an upper-case letter.

Thirdly, don't ever, ever, compare Strings using the "==" operator; even if it seems to work, relatively minor changes to a program can make it stop working. Instead, use the equals() method to do the comparison --

if (s1.equals(s2)) ...
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic