Results 1 to 9 of 9
  1. #1
    Keke101 is offline Member
    Join Date
    Jan 2012
    Posts
    8
    Rep Power
    0

    Default Binary Operator Methods

    Java Code:
    // This class represents linear distance
    public class Distance 
    {
      int feet;
      int yards;
      int miles;
      // Constructors
      public Distance()
      { 
        feet = 0; 
       yards = 0; 
       miles = 0; 
      }
      public Distance(int inFeet, int inYards, int inMiles)
      { 
        feet = inFeet; 
       yards = inYards;  
       miles = inMiles; 
      }
    
      public int getFeet() { return feet; }
      public int getYards() { return yards; }
      public int getMiles() { return miles; }
    }

    I am having a hard time and am probably over thinking this but, even the explaination my teacher provided does not make sense.

    "The paramerterized constructor does not check to see if the input arguments are normalized. That is, it does not check to see if the value for feet is between 0 and 3 (not inclusive) or the value for yards is between 0 and 1760 (not inclusive). Normalize these values and increment as necessary. (Hint: use / and %)

    Any help would be appreciated. Thanks
    Last edited by pbrockway2; 01-09-2012 at 02:36 AM. Reason: code tags added

  2. #2
    quad64bit's Avatar
    quad64bit is offline Moderator
    Join Date
    Jul 2009
    Location
    VA
    Posts
    1,323
    Rep Power
    6

    Default Re: Binary Operator Methods

    Could you clean up your code with code tags please?

    I think what your prof. is saying is this: If I were to input a distance of 9 feet, what I should instead store is 3 yards. Another example would be if I stored 1 mile, 13 feet, what I would instead store would be 1 mile, 4 yards, 1 foot. You can use / and % to both determine how many increments you need to use, and to get the remainder after. Try this example, and see if you can make it work with your app:

    Input:
    13 feet
    0 yards
    0 miles

    Convert this to yards AND feet instead of just feet using / and %.

  3. #3
    pbrockway2 is offline Moderator
    Join Date
    Feb 2009
    Location
    New Zealand
    Posts
    4,565
    Rep Power
    12

    Default Re: Binary Operator Methods


  4. #4
    Keke101 is offline Member
    Join Date
    Jan 2012
    Posts
    8
    Rep Power
    0

    Default Re: Binary Operator Methods

    I am not sure how to clean up your code with code tags. I am new to this forum.

    Also I don't think I am understanding where I am supposed to normalize these values and increment as necessary. I think I understand what / and % mean but, am not sure how to use them in the program.

  5. #5
    pbrockway2 is offline Moderator
    Join Date
    Feb 2009
    Location
    New Zealand
    Posts
    4,565
    Rep Power
    12

    Default Re: Binary Operator Methods

    I've added the code tags: you put [code] at the start of the code and [/code] at the end.

  6. #6
    quad64bit's Avatar
    quad64bit is offline Moderator
    Join Date
    Jul 2009
    Location
    VA
    Posts
    1,323
    Rep Power
    6

    Default Re: Binary Operator Methods

    [code][/code] -- wrap your code in those, pbrockway2 gave you a link the a reference for tags here. It will formate your code nicely for us to see.

    So if you know what / and % do, then the answer should be obvious, but let me try to push you along a little.

    If we want to find out how many yards are contained in a certain number of feet, we could divide right?

    37 / 3 = 12

    Great, its 12 yards. But what about the remainder? The remainder would be written in feet, but how can we figure that out?

    Enter the modulus operator.

    37 % 3 = 1

    What do we have? 12 yards and 1 foot. You could do this successively starting with mile, and save the values as you go into the corresponding fields. My old CS prof gave me the same problem in my first programming class years ago, but he used a change drawer as an example - You want to give proper change to the customer using the largest bills/coins possible. If the price was $737.31, how many hundreds, fifties, twenties, tens, fives, ones, .25, .1, and 1 cent coins does the person get back? This is the same idea.

    As far as where to do it -- it should probably happen in the constructor, but the logic doesn't have to be there. You could write a method to do the work, and call the method from the constructor.

  7. #7
    Keke101 is offline Member
    Join Date
    Jan 2012
    Posts
    8
    Rep Power
    0

    Default Re: Binary Operator Methods

    Java Code:
    public class Distance 
    {
      int feet;
      int yards;
      int miles;
      // Constructors
      public Distance()
      { 
        feet = 0; 
       yards = 0; 
       miles = 0; 
      }
      public Distance(int inFeet, int inYards, int inMiles)
      { 
        feet = inFeet % 3; 
       yards = inYards / 3;  
       miles = inMiles; 
      }
    
      public int getFeet() { return feet; }
      public int getYards() { return yards; }
      public int getMiles() { return miles; }
    }
    Okay so this is what I input and I was able to compile this. Could you please tell me if this is what I am looking for?

  8. #8
    quad64bit's Avatar
    quad64bit is offline Moderator
    Join Date
    Jul 2009
    Location
    VA
    Posts
    1,323
    Rep Power
    6

    Default Re: Binary Operator Methods

    Ok, without a computer, using only paper and pen, does this do what you think it should?

    Java Code:
    public Distance(int inFeet, int inYards, int inMiles)
      { 
        feet = inFeet % 3; 
       yards = inYards / 3;  
       miles = inMiles; 
      }
    For instance, if you input numbers into the params, what would you end up with?

  9. #9
    pbrockway2 is offline Moderator
    Join Date
    Feb 2009
    Location
    New Zealand
    Posts
    4,565
    Rep Power
    12

    Default Re: Binary Operator Methods

    Could you please tell me if this is what I am looking for?
    The way to tell is to add a small main() method that can exercise (test) the class. In particular we want to see if the new form of the constructor is doing the right thing:

    Java Code:
        // examples assume that my memory of the antedeluvian units doesn't fail me...
    public static void main(String args) {
        Distance toTest = new Distance(1, 2, 3);
            // expected output "feet=1 yards=2 miles=3"
        System.out.println("feet=" + toTest.getFeet() + " yards=" 
                + toTest.getYards() + " miles=" + toTest.getMiles());
    
        toTest = new Distance(3, 41, 0);
            // expected output "feet=0 yards=42 miles=0"
        System.out.println("feet=" + toTest.getFeet() + " yards=" 
                + toTest.getYards() + " miles=" + toTest.getMiles());
    
        toTest = new Distance(0, 1761, 0);
            // expected output "feet=0 yards=1 miles=1"
        System.out.println("feet=" + toTest.getFeet() + " yards=" 
                + toTest.getYards() + " miles=" + toTest.getMiles());
    
        toTest = new Distance(5280, 42, 0);
            // expected output "feet=0 yards=42 miles=1"
        System.out.println("feet=" + toTest.getFeet() + " yards=" 
                + toTest.getYards() + " miles=" + toTest.getMiles());
    }
    As you update the code, run the resulting program and check that you're getting the right answer.

    -----

    One thing that does strike me is that if "big" numbers are given as arguments to the constructor I would expect some change to be made. (that's the whole point of the question). But I don't see any if statements anywhere...

Similar Threads

  1. Replies: 8
    Last Post: 04-16-2012, 11:00 PM
  2. Replies: 1
    Last Post: 11-01-2011, 05:35 PM
  3. What Type is a Binary Operator?
    By TheGame in forum New To Java
    Replies: 5
    Last Post: 10-13-2010, 04:04 AM
  4. "Best" implementation of math operator methods?
    By rgrant222 in forum New To Java
    Replies: 2
    Last Post: 09-01-2010, 07:47 AM
  5. Binary Tree Deletion & Balance Methods
    By sev51 in forum New To Java
    Replies: 1
    Last Post: 01-27-2009, 04:26 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •