>Could anyone tell me why? How do I fix it?
How does it fail? What is it doing that you do not want it to do?
What is it not doing that you want it to do?
>package setTest;
>import java.util.*;
[quoted text clipped - 37 lines]
> return -1;
> }
This implementation of compareTo is almost certainly wrong. compareTo
returns a negative, zero or positive. Your version here can never
return zero. You need to check the documentation first.
> public SetTest(int s, String x){
> s1 = s;
[quoted text clipped - 3 lines]
> populate();
> System.out.println("The size of set is: " + set.size());
What is set.size()? You have not declared anything called "set" and
you have not defined a method called"size()".
rossum
> display();
> }
> private int s1;
> private String x1;
> static protected Set<SetTest> set = new TreeSet<SetTest>();
>}
Lew - 23 Mar 2008 11:37 GMT
-Rick- wrote:
>> public boolean equals(Object o) {
>> if (!(o instanceof SetTest))
[quoted text clipped - 4 lines]
>> else
>> return false;
How come you don't just
return s.getS1() == this.getS1() && s.getX1() == this.getX1();
?
>> }
>> public static void main(String[] args){
>> populate();
>> System.out.println("The size of set is: " + set.size());
> What is set.size()? You have not declared anything called "set" and
> you have not defined a method called"size()".
-Rick- wrote:
>> static protected Set<SetTest> set = new TreeSet<SetTest>();
>> }
And that is the reason I excoriate placing member declarations at the bottom.
The standard is to place them before method declarations:
<http://java.sun.com/docs/codeconv/html/CodeConventions.doc2.html#1852>
To the OP: You cause confusion when you deviate from the standard or the few
allowable variations (e.g., the opening brace on its own line indented the
same as its control statement).

Signature
Lew
-Rick- - 23 Mar 2008 15:47 GMT
> -Rick- wrote:
> >> public boolean equals(Object o) {
[quoted text clipped - 31 lines]
> --
> Lew
@Rossum: I put my class variables at the bottom. All of my java and c
++ literature puts them at the bottom. I'm hoping some of their
genius rubs off on me ;)
@Lew: I browsed your link and it talks of the order of writing
variables, not about putting them above or below your method code.
My error is that it outputs the results twice, ie:
Compiling 1 source file to C:\myJavaFiles\SetTest\build\classes
compile:
run:
The size of set is: 6
1 One
1 Two
1 Two
2 One
2 One
1 One
BUILD SUCCESSFUL (total time: 5 seconds)
Last time I saw this error, it was a super constructor issue. But I
don't know about this one.
I abused the compareTo() because I'm trying to compare ints and the
compiler tells me that I ints can't be dereferenced.
@Lew: return s.getS1() == this.getS1() && s.getX1() == this.getX1();
doesn't work because it returns boolean and the compiler wants an int
(int compareTo()).
Could someone please help me out in this issue?
Lew - 23 Mar 2008 17:02 GMT
>>>> public boolean equals(Object o) {
>>>> if (!(o instanceof SetTest))
[quoted text clipped - 4 lines]
>>>> else
>>>> return false;
Lew wrote:
>> How come you don't just
>> return s.getS1() == this.getS1() && s.getX1() == this.getX1();
>> ?
> @Lew: return s.getS1() == this.getS1() && s.getX1() == this.getX1();
> doesn't work because it returns boolean and the compiler wants an int
> (int compareTo()).
Please note: I did not make that suggestion for compareTo().

Signature
Lew