1.11M Members

Creating The MyInteger Class in Java:

 
0
 

Hello everyone,

I am having trouble finishing my program. I am having the most trouble with the method, as described in my book, parseInt(char[]). I can't figure out what to do, I don't know how to properly write the method for this.

I will include the entire program description for the perusal of anyone interested:

Problem Description:
Design a class named MyInteger. The class contains:
An int data field named value that stores the int value represented by this object.
A constructor that creates a MyInteger object for the specified int value.
A get method that returns the int value.
Methods isEven(), isOdd(), and isPrime() that return true if the value is even, odd, or prime, respectively.
Static methods isEven(int), isOdd(int), and isPrime(int) that return true if the specified value is even, odd, or prime, respectively.
Static methods isEven(MyInteger), isOdd(MyInteger), and isPrime(MyInteger) that return true if the specified value is even, odd, or prime, respectively.
Methods equals(int) and equals(MyInteger) that return true if the value in the object is equal to the specified value.
A static method parseInt(char[]) that converts an array of numeric characters to an int value.
A static method parseInt(String)that converts a string into an int value.


Any help would be greatly appreciated.

Here is what I have so far:

public class NewMyInteger {

    public static void main(String[] args) {
        MyInteger n1 = new MyInteger(5);
        System.out.println("n1 is even? " + n1.isEven());
        System.out.println("n1 is prime? " + n1.isPrime());
        System.out.println("15 is prime? " + MyInteger.isPrime(15));

        char[] chars = {'3', '5', '3', '9'};
        System.out.println(MyInteger.parseInt(chars));

        String s = "3539";
        System.out.println(MyInteger.parseInt(s));

        MyInteger n2 = new MyInteger(24);
        System.out.println("n2 is odd? " + n2.isOdd());
        System.out.println("45 is odd? " + MyInteger.isOdd(45));
        System.out.println("n1 is equal to n2? " + n1.equals(n2));
        System.out.println("n1 is equal to 5? " + n1.equals(5));
    }
}

class MyInteger {
    // Implement your class here

    //int data field
    int value;

    //constructor that creates a MyInteger object for specified int value
    public MyInteger(int value) {
        this.value = value;
    }

    //get method to return the int value
    public Integer getValue() {
        return value;
    }

    //method for returning boolean value for isEven
    public boolean isEven() {
        if (value % 2 == 0) {
            return true;
        }
        return false;
    }

    //method for returning boolean value for isOdd
    public boolean isOdd() {
        if (value % 2 != 0) {
            return true;
        }
        return false;
    }

    // method for returning boolean value isPrime
    public boolean isPrime() {
        int factor = 0;
        for (factor = 2; factor <= value / 2; factor++) {
            if (value % factor != 0) {
                return true;
            }
        }
        return false;
    }

    public boolean isEven(int value) {
        if (value % 2 == 0) {
            return true;
        }
        return false;
    }

    public boolean isOdd(int value) {
        if (value % 2 != 0) {
            return true;
        }
        return false;

    }

    public static boolean isPrime(int value) {
        return isPrime(value);
    }

    public static boolean isEven(MyInt myInt) {
        return myInt.isEven(myInt.getValue());
    }

    public static boolean isOdd(MyInt myInt) {
        return myInt.isOdd(myInt.getValue());
    }
    

    public static boolean isPrime(MyInt MyInt) {
        return MyInt.isPrime(MyInt.getValue());
    }

    public boolean equals(int intValue) {
        return value == intValue;
    }

    public boolean equals(MyInt myInt) {
        return equals(myInt.getValue());
    }

    public static int parseInt(String s) {
        return Integer.parseInt(s);
    }

    public static int parseInt() {
         
    
    }
   

}
 
0
 

Be careful with your class names and object names. You have MyInteger (a class) and myInt (an occasional object, a formal parameter of certain methods) and sometimes you try to call MyInt.someMethod(), but MyInt doesn't seem to exist.

If you're calling a static method, you use the class name, if you're calling an instance method (= non-static) then you use the object name, or none if you're in an instance method and calling on the current object (ie, "this")

 
0
 

So what does your method needs to do?
1. Receive char array
2. Maybe you want to run check if each element of array is in deed number. Since you have already array of characters you can use loop to get each of them and check if is number with Character method isDigit(char ch)
3. If all elements are numbers continue to conversion. There is no direct conversion char array to integer therefore you need other way. What can be build or created out of char array? You can use Character method toString() with loop and appending character at the end of a string. Too manual, what about StringBuilder and method append(char[] str)? Still needs a call to convert to string, hmmm. Why not try String class directly? One of many String class constructors is String(char[] value), great use it
4. Now we have String object. Is there way to make it integer? Of course we do! You already implemented in MyInteger class!

 
0
 

Thanks for all of your input, it really helped me find, and fix, my errors. Here is what I have now, if you don't mind would you see if any of my work could be improved upon?

public class NewMyInteger {

    public static void main(String[] args) {
        MyInteger n1 = new MyInteger(5);
        System.out.println("n1 is even? " + n1.isEven());
        System.out.println("n1 is prime? " + n1.isPrime());
        System.out.println("15 is prime? " + MyInteger.isPrime(15));

        char[] chars = {'3', '5', '3', '9'};
        System.out.println(MyInteger.parseInt(chars));

        String s = "3539";
        System.out.println(MyInteger.parseInt(s));

        MyInteger n2 = new MyInteger(24);
        System.out.println("n2 is odd? " + n2.isOdd());
        System.out.println("45 is odd? " + MyInteger.isOdd(45));
        System.out.println("n1 is equal to n2? " + n1.equals(n2));
        System.out.println("n1 is equal to 5? " + n1.equals(5));
    }
}

class MyInteger {

    int value;

    MyInteger(int newValue) {
        value = newValue;
    }

    public int getValue() {
        return value;
    }

    public static boolean isEven(int n) {
        return (n % 2 == 0);
    }

    public static boolean isOdd(int n) {
        return !isEven(n);
    }

    public static boolean isPrime(int n) {
        for (int f = 2; f < n / 2; f++) {
            if (n % f == 0) {
                return false;
            }
        }
        return true;
    }

    public static boolean isEven(MyInteger n) {
        return n.isEven();
    }

    public static boolean isOdd(MyInteger n) {
        return n.isOdd();
    }

    public static boolean isPrime(MyInteger n) {
        return n.isPrime();
    }

    public boolean isEven() {
        return isEven(value);
    }

    public boolean isOdd() {
        return isOdd(value);
    }

    public boolean isPrime() {
        return isPrime(value);
    }

    public boolean equals(int n) {
        return (value == n);
    }

    public boolean equals(MyInteger n) {
        return equals(n.getValue());
    }

    public static int parseInt(String s) {
        return Integer.parseInt(s);
    }

    public static int parseInt(char[] s) {
        return parseInt(new String(s));
    }
}
Question Answered as of 3 Years Ago by peter_budo and jon.kiparsky
You
This question has already been solved: Start a new discussion instead
Post:
Start New Discussion
Tags Related to this Article