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);这句。在方法里实例化一个类好像也没怎么见
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);这句。在方法里实例化一个类好像也没怎么见
这个是不是自定义的类,你看一下import,导入的是什么
add(-n);这一句就把你传进去的数字变成负的了,然后再添加到Set里,调用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。
因此全部都反过来了。
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();
}
}
public void show() 这个就不解释了
negatives.numbers.add(-n);
第一个是1.add(-1)吧,这是把1替换为-1吗?为什么1没了。。
add到Set里的就是-1了,为什么还会有1呢?
Integer nn = new Integer(-n);
negatives.numbers.add(nn);