Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is String not considered an object?

Tags:

java

interface

What I do not understand is why I am getting an error compiling my code when a String is in fact an object, and the compiler is saying otherwise. I dont know why I keep getting this error message

  symbol:   method compareTo(Object)
  location: variable least of type Object
.\DataSet.java:17: error: cannot find symbol
   else if(maximum.compareTo(x) < 0)

here is the code. I'm trying to utilize the class comparable to allow two objects to use the compareTo method. In the tester, I'm just trying to use a basic string object to compare.

public class DataSetTester
{
public static void main(String[] args)
{
    DataSet ds = new DataSet();
    String man = "dog";
    String woman = "cat";
    ds.add(man);
    ds.add(woman);
    System.out.println("Maximum Word: " + ds.getMaximum());


 }
}

Class:

public class DataSet implements Comparable 
{
 private Object maximum;
 private Object least;
 private int count;
 private int answer;

 public void add(Object x)
 {

   if(count == 0){
     least = x;
     maximum = x;
   }
   else if(least.compareTo(x) > 0)
     least = x;
   else if(maximum.compareTo(x) < 0)
    maximum = x;
   count++;
 }

 public int compareTo(Object anObject)
 {
     return this.compareTo(anObject);
 }

 public Object getMaximum()
 {
  return maximum;
 }

 public Object getLeast()
 {
   return least;
 }
}

Comparable Interface:

public interface Comparable
{
    public int compareTo(Object anObject);
}
like image 338
James Avatar asked May 11 '26 19:05

James


1 Answers

Of course String is an Object.

Comparable is generic now. Why do you feel the need to make those references Object if they are type String? Your code is poor; it's not a Java problem.

I don't see why DataSet needs to implement Comparable. You just need to compare incoming Strings as they're added. Do it this way and you'll fare better:

public class DataSet {
    private String maximum;
    private String least;
    private int count;
    private int answer;

    public void add(String x) {  
        if(count == 0){
             least = x;
             maximum = x;
        } else if (least.compareTo(x) > 0) {
             least = x;
        } else if(maximum.compareTo(x) < 0) {
             maximum = x;
        }
        count++;
    }

    public String getMaximum() { return this.maximum; }

    public String getLeast() { return this.least; }

    public int getCount() { return this.count; }
}
like image 177
duffymo Avatar answered May 14 '26 09:05

duffymo



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!