Go Back   CodingForums.com > :: Server side development > Java and JSP

Before you post, read our: Rules & Posting Guidelines

Reply
 
Thread Tools Rate Thread
Enjoy an ad free experience by logging in. Not a member yet? Register.
Old 02-25-2005, 09:28 PM   PM User | #1
cwl157
New Coder

 
Join Date: Jun 2003
Posts: 92
Thanks: 0
Thanked 0 Times in 0 Posts
cwl157 is an unknown quantity at this point
objects in java

I need to make a calculator in java but in an object oriented way. In the end it is supposed to take a user inputted expression as a string and solve the expression just left to right ignoring any order of operations. I am trying to make the first object which is a number object. I get 2 compiling errors one says identifier expected in line 6 and the other says im missing a curling brace on line 82 ( the end of the class). Can someone help me out and tell me how i am constucting it wrong. And also if you can tell me if this will work when i implement it in another class. I really have little idea of what im doing.
Here is the code:
Code:
import java.util.*;
import java.io.*;
public class Number
{
  int numExp = Number.getInput();

  Number(int numExp)
  {
    this.doOperation(Exper);
  }
  
  //gets a single input from the user, and returns it as a String
 static String getInput()
 {
  java.io.InputStreamReader input = new java.io.InputStreamReader(System.in);
  java.io.BufferedReader console = new java.io.BufferedReader(input);

  try
  {
   return console.readLine();
  }
  catch(java.io.IOException e)
  {
   System.err.println("Bad NEWS!!!");
   return "";
  }
 }

  //Uses the StringTokenizer to break up the numeric experession and sends the tokens to the performOperation method
 static int doOperation(String Exper)
 {
  int result=0; int num =0; String operation ="";
  StringTokenizer numEx = new StringTokenizer(Exper, "+-/%*", true);
  result = Integer.parseInt(numEx.nextToken());
  if(!numEx.hasMoreTokens())
  {
  return result;
  }
  do
  {
   operation = numEx.nextToken();
   num = Integer.parseInt(numEx.nextToken());
   result = Calculator1.performOperation(result, num, operation);
  }while(numEx.hasMoreTokens());
  return result;
 }

  //performs the operation op on num1 and num2 returning the result as an int to result int the doOperation class
 static Number performOperation(Number num1, Number Exper, Operator op)
 {
  if(op.equals("+"))
  {
   return num1 + num2;
  }
  else if(op.equals("-"))
  {
   return num1 - num2;
  }
  else if(op.equals("*"))
  {
   return num1 * num2;
  }
  else if(op.equals("/"))
  {
   return num1 / num2;
  }
  else if(op.equals("%"))
  {
  return num1 % num2;
  }
 else
 {
  System.err.println("Not an operation: " + op);
  return -1;
 }
 }

  static int getValue(number a)
  {
    int result = (int) a;
    return result;
  }
}
cwl157 is offline   Reply With Quote
Old 02-25-2005, 09:37 PM   PM User | #2
cwl157
New Coder

 
Join Date: Jun 2003
Posts: 92
Thanks: 0
Thanked 0 Times in 0 Posts
cwl157 is an unknown quantity at this point
ok so i looked more closely at the code i posted and realized a lot of stupid mistakes. So now i really have no idea where to start. I have a plan that is correct but i have no idea where to start the implementation. I have a program that does this but its all in one class and i have no clue how to break it up. Can someone please give me some direction? Thanks
cwl157 is offline   Reply With Quote
Old 02-26-2005, 05:22 PM   PM User | #3
cwl157
New Coder

 
Join Date: Jun 2003
Posts: 92
Thanks: 0
Thanked 0 Times in 0 Posts
cwl157 is an unknown quantity at this point
I think what im really confused about is building the constructors. I completed the first class which is called number all except for the constructor. What do i put in the constructor to make it create all those methods or whatever? Here is the number class without a constructor can someone help me built a contructor for it?
Code:
import java.io.*;
import java.util.*;

public class Number
{
    
 //gets a single input from the user, and returns it as a String
 static String getInput()
 {
  java.io.InputStreamReader input = new java.io.InputStreamReader(System.in);
  java.io.BufferedReader console = new java.io.BufferedReader(input);

  try
  {
   return console.readLine();
  }
  catch(java.io.IOException e)
  {
   System.err.println("Bad NEWS!!!");
   return "";
  }
 }
 
 //Uses the StringTokenizer to break up the numeric experession and sends the tokens to the performOperation method
 static int doOperation(String Exper)
 {
  int result=0; int num =0; String operation ="";
  StringTokenizer numEx = new StringTokenizer(Exper, "+-/%*", true);
  result = Integer.parseInt(numEx.nextToken());
  if(!numEx.hasMoreTokens())
  {
  return result;
  }
  do
  {
   operation = numEx.nextToken();
   num = Integer.parseInt(numEx.nextToken());
   result = Number.performOperation(result, num, operation);
  }while(numEx.hasMoreTokens());
  return result;
 }
 
 //performs the operation op on num1 and num2 returning the result as an int to result int the doOperation class
 static int performOperation(int num1, int num2, String op)
 {
  if(op.equals("+"))
  {
   return num1 + num2;
  }
  else if(op.equals("-"))
  {
   return num1 - num2;
  }
  else if(op.equals("*"))
  {
   return num1 * num2;
  }
  else if(op.equals("/"))
  {
   return num1 / num2;
  }
  else if(op.equals("%"))
  {
  return num1 % num2;
 }
 else
 {
  System.err.println("Not an operation: " + op);
  return -1;
 }
 }
}
cwl157 is offline   Reply With Quote
Old 02-26-2005, 09:57 PM   PM User | #4
cwl157
New Coder

 
Join Date: Jun 2003
Posts: 92
Thanks: 0
Thanked 0 Times in 0 Posts
cwl157 is an unknown quantity at this point
o so now i think i have all the objects written. However, when i run it in NetBeans IDE it compiles and runs fine. But if i try to run it in the command line it gives a nosuchelement exception. Does anyone know why it runs ok in netbeans but not in the command line? Here are the classes

Number class
Code:
import java.io.*;
import java.util.*;

public class Number
{
    Number()
    {
    }
    
 //gets a single input from the user, and returns it as a String
 String getInput()
 {
  java.io.InputStreamReader input = new java.io.InputStreamReader(System.in);
  java.io.BufferedReader console = new java.io.BufferedReader(input);

  try
  {
   return console.readLine();
  }
  catch(java.io.IOException e)
  {
   System.err.println("Bad NEWS!!!");
   return "";
  }
 }
 
  int getValue(String result)
    {
        Operator o = new Operator();
        int num = 0;
        String check = "";
        StringTokenizer tok = new StringTokenizer(this.getInput());
        do
        {
           check = tok.nextToken();
           if(!check.equals("+") || !check.equals("-") ||!check.equals("*") || !check.equals("/") || !check.equals("%"))
              num = Integer.parseInt(check);
           else
               o.getOp(result);
        }while(tok.hasMoreTokens());
        
        return num;
    }
 
 
 //Uses the StringTokenizer to break up the numeric experession and sends the tokens to the performOperation method
 int doOperation(String Exper)
 {
  int result=0; int num =0; String operation ="";
  StringTokenizer numEx = new StringTokenizer(Exper, "+-/%*", true);
  result = Integer.parseInt(numEx.nextToken());
  if(!numEx.hasMoreTokens())
  {
  return result;
  }
  do
  {
   operation = numEx.nextToken();
   num = Integer.parseInt(numEx.nextToken());
   result = Number.performOperation(result, num, operation);
  }while(numEx.hasMoreTokens());
  return result;
 }
 
 //performs the operation op on num1 and num2 returning the result as an int to result int the doOperation class
   static int performOperation(int num1, int num2, String op)
   {
    if(op.equals("+"))
    {
      return num1 + num2;
    }
    else if(op.equals("-"))
    {
     return num1 - num2;
    }
   else if(op.equals("*"))
   {
     return num1 * num2;
   }
  else if(op.equals("/"))
  {
   return num1 / num2;
  }
    else if(op.equals("%"))
   {
     return num1 % num2;
  }
  else
  {
   System.err.println("Not an operation: " + op);
   return -1;
  }
 }
}
Operator class
Code:
import java.io.*;
import java.util.*;

public class Operator
{
     Number t = new Number();
    String result = t.getInput();
    
    Operator()
    {
        this.getOp(result);
    }
    
    char getOp(String result)
    {
        char op = '+';
        String check = "";
        StringTokenizer tok = new StringTokenizer(t.getInput());
        do
        {
           check = tok.nextToken();
           if(check.equals("+"))
               op = '+';
           if(check.equals("-"))
               op = '-';
           if(check.equals("*"))
               op = '*';
           if(check.equals("/"))
               op = '/';
           if(check.equals("%"))
               op = '%';
        }while(tok.hasMoreTokens());
        
        return op;
    }
}
CalculatorOO class with main method
Code:
import java.io.*;
import java.util.*;

public class CalculatorOO
{
    public static void main(String args[])
    {
        String cont = "";
        Number n = new Number();
        StringTokenizer result = new StringTokenizer(n.getInput());
        Operator op = new Operator();
        
        do
        {
          String exp = n.getInput();
          System.out.println(op.getOp(exp));
          System.out.println(n.getValue(exp));
        }while(result.hasMoreTokens());
         do
        {
         System.out.println("Please enter a numeric expression: ");
         System.out.print("Do you want to enter another expression (y/n): ");
         cont = n.getInput();
        }while(cont.equalsIgnoreCase("y"));
        System.out.println("Goodbye");
    }
}
cwl157 is offline   Reply With Quote
Reply

Bookmarks

Jump To Top of Thread


Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 02:09 PM.


Advertisement
Log in to turn off these ads.