Ch ng h n:
ẳ
ạ
rect.setLocation(rect.getLocation().translate( -rect.getWidth(),
-rect.getHeight()));
Có th đ
c vi t l i thành
ể ượ
ế ạ
int
dx = -rect.getWidth();
int
dy = -rect.getHeight();
Point location = rect.getLocation();
Point newLocation = location.translate(dx, dy);
rect.setLocation(newLocation);
D ng mã l nh chi ti t thì d đ c h n vì tên bi n cho ta b n thân đã giúp gi i thích rõ thêm, và cũng d
ạ
ệ
ế
ễ ọ ơ
ế
ả
ả
ễ
g l i h n vì b n có th ki m tra ki u c a nh ng bi n trung gian cùng vi c hi n th giá tr c a chúng.
ỡ ỗ ơ
ạ
ể ể
ể ủ
ữ
ế
ệ
ể
ị
ị ủ
M t v n đ khác có th x y ra v i nh ng bi u th c l n là th t th c hi n phép tính có th không nh
ộ ấ
ề
ể ả
ớ
ữ
ể
ứ ớ
ứ ự ự
ệ
ể
ư
b n mong mu n. Ch ng h n, đ l
ng giá bi u th c
ạ
ố
ẳ
ạ
ể ượ
ể
ứ x / 2π , có th b n đã vi t:
ể ạ
ế
double
y = x / 2 * Math.PI;
Đi u này không đúng vì các phép nhân và chia có cùng th t u tiên và đ
c l
ng giá t trái sang
ề
ứ ự ư
ượ ượ
ừ
ph i. Vì v y bi u th c này s tính
ả
ậ
ể
ứ
ẽ
xπ / 2.
M t cách hay đ g l i bi u th c là thêm vào nh ng c p ngo c đ n đ giúp cho th t l
ng giá đ
c rõ
ộ
ể ỡ ỗ
ể
ứ
ữ
ặ
ặ ơ
ể
ứ ự ượ
ượ
ràng:
double
y = x / (2 * Math.PI);
Phiên b n này thì đúng đ n, và d đ c h n đ i v i ng
i không ghi nh th t th c hi n phép toán.
ả
ắ
ễ ọ ơ
ố ớ
ườ
ớ ứ ự ự
ệ
PH
NG TH C TÔI ĐÃ VI T KHÔNG TR L I GIÁ TR NH D KI N.
ƯƠ
Ứ
Ế
Ả Ạ
Ị
Ư Ự
Ế
N u b n vi t m t câu l nh return (tr v ) v i m t bi u th c ph c t p, thì b n đã không có c h i in ra
ế
ạ
ế
ộ
ệ
ả ề ớ
ộ
ể
ứ
ứ ạ
ạ
ơ ộ
giá tr này tr
c khi tr nó v . M t l n n a, b n có th dùng bi n t m. Ch ng h n, thay vì
ị
ướ
ả
ề
ộ ầ
ữ
ạ
ể
ế ạ
ẳ
ạ
public
Rectangle intersection(Rectangle a, Rectangle b) {
return new
Rectangle( Math.min(a.x, b.x), Math.min(a.y, b.y),
Math.max(a.x+a.width, b.x+b.width)-Math.min(a.x, b.x) Math.max(a.y+a.height,
b.y+b.height)-Math.min(a.y, b.y) );
}
b n đã có th vi t
ạ
ể ế
public
Rectangle intersection(Rectangle a, Rectangle b) {
int
x1 = Math.min(a.x, b.x);
int
y2 = Math.min(a.y, b.y);
int
x2 = Math.max(a.x+a.width, b.x+b.width);
int
y2 = Math.max(a.y+a.height, b.y+b.height);
Rectangle rect =
new
Rectangle(x1, y1, x2-x1, y2-y1);