Solved

Applet help - please...

Posted on 1998-07-20
13
166 Views
Last Modified: 2013-11-23
I am trying to develop a simple applet - that when the applet starts generates three random numbers between -10 and +10.  The basics of the applet are that two of the numbers (Num1 and Num2) are summed and then the third number is the answer.  The user enters either (<, = or >) to make the statement true.  I can get the random numbers splatted to the applet, but I can not figure out how  to compare the value entered against the mathmatical expression (Num1 +  Num2 (<, =, >) Num3) - if the proper symbol is selected and the statement evaluates to true "Correct!" is displayed on the applet - or "Incorrect!' is displayed...

Also, there is a button on the applet that clears the values and generates three new random numbers and will do so until the user exits the applet...

Here is the code that I have can anyone help me??

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

public class Game extends Applet implements ActionListener {

      TextField numOne;
      TextField numTwo;
      TextField compare;
      Label plusLabel;
      TextField answer;
      Button NextProblem;
      int value;
      int value1;
      int value2;
      int One;
      int Two;
      int Three;
      int sum;
      int result;
      String sign;
      TextField  correct;

      public void init()
   {

       // sets color and fonts sets up Applet display/look
    setBackground(Color.lightGray);
    setFont(new Font("SansSerif", Font.BOLD, 12));

      // TextFields - Label and Button for UI
    numOne = new TextField();
      numOne.setBounds( 5, 5, 10, 12);
    add( numOne );
      numOne.setEditable( false);

    plusLabel = new Label("+");
      plusLabel.setBounds( 15, 5, 5, 18 );
    plusLabel.setFont(new Font( "SansSerif", Font.BOLD, 18 ) );
    add( plusLabel );

    numTwo = new TextField();
      numTwo.setBounds( 20, 5, 10, 12 );
    add( numTwo );
      numTwo.setEditable( false );

    compare = new TextField();
      compare.setBounds( 30, 5, 10, 12 );
    add( compare );

    answer = new TextField();
      answer.setBounds( 40, 35, 10, 12 );
      add( answer );
      answer.setEditable( false );

       // Button to trigger new random number(s) generation and start game again
    NextProblem = new Button("Next Problem");
      NextProblem.setBounds( 5, 60, 40, 12 );
    add( NextProblem );

    correct = new TextField();
      correct.setBounds( 5, 80, 80, 20 );
      add( correct );


            value = 1 + (int)  (( Math.random() * 20 ) - 10);
            value1 = 1 + (int) (( Math.random() * 20 ) - 10);
            value2 = 1 + (int) (( Math.random() * 20 ) - 10);

            numOne.setText( Integer.toString( value ) );
            numTwo.setText( Integer.toString( value1 ) );
            answer.setText( Integer.toString( value2 ) );

      //compare.addActionListener(this);

    NextProblem.addActionListener(this);

    }


       // ActionEvent performed
    public void actionPerformed(ActionEvent e)
    {

            numOne.setText( "" );
            numTwo.setText( "" );
            answer.setText( "" );

            value = 1 + (int)  (( Math.random() * 20 ) - 10);
            value1 = 1 + (int) (( Math.random() * 20 ) - 10);
            value2 = 1 + (int) (( Math.random() * 20 ) - 10);

            numOne.setText( Integer.toString( value ) );
            numTwo.setText( Integer.toString( value1 ) );
            answer.setText( Integer.toString( value2 ) );

            correct.setText( "" );

    One = Integer.valueOf(numOne.getText()).intValue();
    Two = Integer.valueOf(numTwo.getText()).intValue();
    Three = Integer.valueOf(answer.getText()).intValue();

      sign = answer.getText();
      sum = One + Two;
      result = Three;

if (sum > result)
        {
                if (sign == ">")
                        correct.setText("Correct!");
                else
        if (sum < result)
                if (sign == "<")
                        correct.setText("Correct!");
                else
        if (sum == result)
                if (sign == "=")
                        correct.setText("Correct!");
                else
                        correct.setText("Incorrect!");
       

             }
      }
}

0
Comment
Question by:n2chiles
  • 8
  • 5
13 Comments
 

Author Comment

by:n2chiles
ID: 1227146
Edited text of question
0
 

Author Comment

by:n2chiles
ID: 1227147
Edited text of question
0
 
LVL 6

Accepted Solution

by:
gadio earned 100 total points
ID: 1227148
Here is a fix for your prog. If you have Qs, feel free to ask.

import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;

public class small_game extends Applet implements ActionListener, TextListener {

    TextField numOne;
    TextField numTwo;
    TextField compare;
    Label plusLabel;
    TextField answer;
    Button NextProblem;
    int value;
    int value1;
    int value2;
    int One;
    int Two;
    int Three;
    int sum;
    int result;
    String sign;
    TextField  correct;

    public void init()
       {

    // sets color and fonts sets up Applet display/look
        setBackground(Color.lightGray);
        setFont(new Font("SansSerif", Font.BOLD, 12));

    // TextFields - Label and Button for UI
        numOne = new TextField();
    numOne.setBounds( 5, 5, 10, 12);
        add( numOne );
    numOne.setEditable( false);

        plusLabel = new Label("+");
    plusLabel.setBounds( 15, 5, 5, 18 );
        plusLabel.setFont(new Font( "SansSerif", Font.BOLD, 18 ) );
        add( plusLabel );

        numTwo = new TextField();
    numTwo.setBounds( 20, 5, 10, 12 );
        add( numTwo );
    numTwo.setEditable( false );

        compare = new TextField();
    compare.setBounds( 30, 5, 10, 12 );
    compare.addTextListener(this);
        add( compare );

        answer = new TextField();
    answer.setBounds( 40, 35, 10, 12 );
    add( answer );
    answer.setEditable( false );

    // Button to trigger new random number(s) generation and start game again
        NextProblem = new Button("Next Problem");
    NextProblem.setBounds( 5, 60, 40, 12 );
        add( NextProblem );

        correct = new TextField(10);
    //correct.setBounds( 5, 80, 80, 20 );
    add( correct );


    value = 1 + (int)  (( Math.random() * 20 ) - 10);
    value1 = 1 + (int) (( Math.random() * 20 ) - 10);
    value2 = 1 + (int) (( Math.random() * 20 ) - 10);

    numOne.setText( Integer.toString( value ) );
    numTwo.setText( Integer.toString( value1 ) );
    answer.setText( Integer.toString( value2 ) );

    //compare.addActionListener(this);

        NextProblem.addActionListener(this);

        }


    public void textValueChanged( TextEvent te ) {

    if( correct == null ) return;

        One = Integer.valueOf(numOne.getText()).intValue();
        Two = Integer.valueOf(numTwo.getText()).intValue();
        Three = Integer.valueOf(answer.getText()).intValue();

    sign = compare.getText();

    sum = One + Two;
    result = Three;

    if (sum > result)
            {
                    if (sign.equals( ">" )) {
                            correct.setText("Correct!");
                            compare.setEditable(false);
                    }
                    else
            if (sum < result)
                    if (sign.equals("<")) {
                            correct.setText("Correct!");
                            compare.setEditable(false);
                    }
                    else
            if (sum == result)
                    if (sign.equals("=") ) {
                            correct.setText("Correct!");
                            compare.setEditable(false);
                    }
                    else {
                            correct.setText("Incorrect!");
                            compare.setEditable(false);
                    }


      }
    }

    // ActionEvent performed
        public void actionPerformed(ActionEvent e)
        {
    correct.setText( "" );

    numOne.setText( "" );
    numTwo.setText( "" );
    answer.setText( "" );

    value = 1 + (int)  (( Math.random() * 20 ) - 10);
    value1 = 1 + (int) (( Math.random() * 20 ) - 10);
    value2 = 1 + (int) (( Math.random() * 20 ) - 10);

    numOne.setText( Integer.toString( value ) );
    numTwo.setText( Integer.toString( value1 ) );
    answer.setText( Integer.toString( value2 ) );
    compare.setEditable(true);

    }
}


0
 
LVL 6

Expert Comment

by:gadio
ID: 1227149
The finding and checking of the sign works, but you still have some logical bugs there.  :-)  Thats for you to fix...
0
 

Author Comment

by:n2chiles
ID: 1227150
Gadio,

Thanks,  I appreciate the pointers and your assistance.

Have a good one...

map
0
 

Author Comment

by:n2chiles
ID: 1227151
Gadio,

I have had time to evaluate and the Nested IF statement only evaluates the first of the three signs in the body of the if statement...

any ideas...


0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 6

Expert Comment

by:gadio
ID: 1227152
Yes. Looking at it again, youl see that all the evaluation section is in this condition:

 if (sum > result)

So, only in that condition ANY other condition is evaluated...
0
 

Author Comment

by:n2chiles
ID: 1227153
Gadio,

I tried playing with the nested IF statements and got nowhere with it...

I have been tinkering with the Switch statement but can't get it through the compiler...

I am taking a closer look at the way the ActionListener works and why I can't use the Switch in TextListener - I am starting to get frustrated because being new at Java I am not too experienced with the syntax and that is what seems to be tripping me up...

You know how to use it and when to use it...

map
0
 

Author Comment

by:n2chiles
ID: 1227154
Gadio,

I tried playing with the nested IF statements and got nowhere with it...

I have been tinkering with the Switch statement but can't get it through the compiler...

I am taking a closer look at the way the ActionListener works and why I can't use the Switch in TextListener - I am starting to get frustrated because being new at Java I am not too experienced with the syntax and that is what seems to be tripping me up...

You know how to use it and when to use it...

map
0
 
LVL 6

Expert Comment

by:gadio
ID: 1227155
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;

public class small_game extends Applet implements ActionListener, TextListener {

  TextField numOne;
  TextField numTwo;
  TextField compare;
  Label plusLabel;
  TextField answer;
  Button NextProblem;
  int value;
  int value1;
  int value2;
  int One;
  int Two;
  int Three;
  int sum;
  int result;
  String sign;
  TextField  correct;

  public void init()
  {

    // sets color and fonts sets up Applet display/look
        setBackground(Color.lightGray);
        setFont(new Font("SansSerif", Font.BOLD, 12));

    // TextFields - Label and Button for UI
        numOne = new TextField();
    numOne.setBounds( 5, 5, 10, 12);
        add( numOne );
    numOne.setEditable( false);

        plusLabel = new Label("+");
    plusLabel.setBounds( 15, 5, 5, 18 );
        plusLabel.setFont(new Font( "SansSerif", Font.BOLD, 18 ) );
        add( plusLabel );

        numTwo = new TextField();
    numTwo.setBounds( 20, 5, 10, 12 );
        add( numTwo );
    numTwo.setEditable( false );

        compare = new TextField();
    compare.setBounds( 30, 5, 10, 12 );
    compare.addTextListener(this);
        add( compare );

        answer = new TextField();
    answer.setBounds( 40, 35, 10, 12 );
    add( answer );
    answer.setEditable( false );

    // Button to trigger new random number(s) generation and start game again
        NextProblem = new Button("Next Problem");
    NextProblem.setBounds( 5, 60, 40, 12 );
        add( NextProblem );

        correct = new TextField(10);
    //correct.setBounds( 5, 80, 80, 20 );
    add( correct );


    value = 1 + (int)  (( Math.random() * 20 ) - 10);
    value1 = 1 + (int) (( Math.random() * 20 ) - 10);
    value2 = 1 + (int) (( Math.random() * 20 ) - 10);

    numOne.setText( Integer.toString( value ) );
    numTwo.setText( Integer.toString( value1 ) );
    answer.setText( Integer.toString( value2 ) );

    //compare.addActionListener(this);

        NextProblem.addActionListener(this);

  }


  public void textValueChanged( TextEvent te ) {

    if( correct == null ) return;

        One = Integer.valueOf(numOne.getText()).intValue();
        Two = Integer.valueOf(numTwo.getText()).intValue();
        Three = Integer.valueOf(answer.getText()).intValue();

    sign = compare.getText();

    sum = One + Two;
    result = Three;

    if ( sign.equals( ">" ) || sign.equals("<") || sign.equals("=") ) {
          if ( (sum > result && sign.equals( ">" )) ||
                   (sum < result && sign.equals("<")) ||
                   (sum == result && (sign.equals("=") )) ) {
                correct.setText("Correct!");
                compare.setEditable(false);
          }
          else {
                correct.setText("Incorrect!");
                compare.setEditable(false);
          }
        }
        else if( ! sign.equals("") ) compare.setText("");
  }

  // ActionEvent performed
  public void actionPerformed(ActionEvent e)
  {
    correct.setText( "" );
    compare.setText( "" );

    numOne.setText( "" );
    numTwo.setText( "" );
    answer.setText( "" );

    value = 1 + (int)  (( Math.random() * 20 ) - 10);
    value1 = 1 + (int) (( Math.random() * 20 ) - 10);
    value2 = 1 + (int) (( Math.random() * 20 ) - 10);

    numOne.setText( Integer.toString( value ) );
    numTwo.setText( Integer.toString( value1 ) );
    answer.setText( Integer.toString( value2 ) );
    compare.setEditable(true);

  }
}

Enjoy.
G.
0
 

Author Comment

by:n2chiles
ID: 1227156
G.

Thanks,

The only other problem is that I can not figure out how to ge the LayoutManager to let me null it out so I can use the setBounds() to position the labels and TextField on the applet.

I believe it is the FlowLayout that is the default LayoutManger for applet - but how in the H - E - double hockey sticks do you null it out??

Thanks again...

map
0
 

Author Comment

by:n2chiles
ID: 1227157
G.

I figured it out...

setLayout( null );

that worked great!!

Thanks for a prod - poke and the swift kick in the behind...

It has helped me learn a great deal and reduced the stress levels too!!

Thanks again,

map
0
 
LVL 6

Expert Comment

by:gadio
ID: 1227158
Happy to be of help.
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

By the end of 1980s, object oriented programming using languages like C++, Simula69 and ObjectPascal gained momentum. It looked like programmers finally found the perfect language. C++ successfully combined the object oriented principles of Simula w…
Are you developing a Java application and want to create Excel Spreadsheets? You have come to the right place, this article will describe how you can create Excel Spreadsheets from a Java Application. For the purposes of this article, I will be u…
Viewers learn about the “while” loop and how to utilize it correctly in Java. Additionally, viewers begin exploring how to include conditional statements within a while loop and avoid an endless loop. Define While Loop: Basic Example: Explanatio…
This tutorial covers a practical example of lazy loading technique and early loading technique in a Singleton Design Pattern.

910 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now