import java.util.*;public class Numbers {
private Set<Integer> numbers = new TreeSet<Integer>();
public Numbers(int... nums) {
for(int n : nums)
numbers.add(n);
}

public Numbers negate() {
Numbers negatives = new Numbers();
for(int n : numbers)
negatives.numbers.add(-n);
return negatives;
}

public void show() {
for(int n : numbers)
System.out.print(n + " ");
}

public static void main(String[] args) {
new Numbers(1, 3, -5).negate().show();
}
} public Numbers negate() {
Numbers negatives = new Numbers();
for(int n : numbers)
negatives.numbers.add(-n);
return negatives;
}这段不懂,到底是怎么把正数变负数的?特别是negatives.numbers.add(-n);这句。在方法里实例化一个类好像也没怎么见

解决方案 »

  1.   

    JDK里没有Numbers类吧
    这个是不是自定义的类,你看一下import,导入的是什么
      

  2.   

    add是Set里面的方法
    add(-n);这一句就把你传进去的数字变成负的了,然后再添加到Set里,调用show()输出来的当然是负的变成正的,正的变成负的了
      

  3.   

    把这句话拆开看new Numbers(1, 3, -5).negate().show();
    先看new Numbers(1, 3, -5)
    实例化Numbers,并且给numbers赋值了。再看new Numbers(1, 3, -5).negate()
    调用negate()方法,在Numbers negatives = new Numbers();中创建了新的实例
    然后通过
    for(int n : numbers)
                negatives.numbers.add(-n);
    给negatives对象中的numbers属性赋值。注意,negatives.numbers和for(int n : numbers)中的number不同,for(int n : numbers)中的number是new Numbers(1, 3, -5)对象的。然后该方法返回negatives对象。最后调用show来输出numbers的内容。注意,现在的numbers指的是negatives中的numbers。
    因此全部都反过来了。
      

  4.   


    import java.util.*;public class Numbers {
    private Set<Integer> numbers = new TreeSet<Integer>(); public Numbers(int... nums) {
    for (int n : nums)
    numbers.add(n);
    } public Numbers negate() {
    //一个新的Numbers对象,改对象的numbers.size 为 0 
    Numbers negatives = new Numbers();
    //for (int n : numbers) 中的numbers 是初始化了的numbers,带3参数
    for (int n : numbers)
    //
    negatives.numbers.add(-n);
    return negatives;
    } public void show() {
    for (int n : numbers)
    System.out.print(n + " ");
    } public static void main(String[] args) {
     //创建一个新的带3个参数的对象,并初始化numbers,加入該3参数
    new Numbers(1, 3, -5).negate().show();
    }
    }
      

  5.   

    private Set<Integer> numbers = new TreeSet<Integer>();上面是整个Numbers 类的核心 public Numbers negate()  返回当前所有数据相反的一个新的 Numbers 
    public void show() 这个就不解释了
      

  6.   

    add(-n);这一句就把你传进去的数字变成负的了,然后再添加到Set里,调用show()输出来的当然是负的变成正的,正的变成负的了
      

  7.   

    add(-n);这一句就把你传进去的数字取反了,然后再添加到Set里,调用show()输出来的就是取反后的数了~
      

  8.   

    我就是搞不懂negatives.numbers.add(-n);这句话是怎么让正数变负数的????
      

  9.   

    for(int n : numbers)
                negatives.numbers.add(-n);
    第一个是1.add(-1)吧,这是把1替换为-1吗?为什么1没了。。
      

  10.   

    n为1时,add(-n) 不就是 add(-1)吗?
    add到Set里的就是-1了,为什么还会有1呢?
      

  11.   

    还没搞懂啊?我给你拆开一下:拆开前:negatives.numbers.add(-n);拆开后:
    Integer nn = new Integer(-n);
    negatives.numbers.add(nn);