THINK JAVA: CÁCH SUY NGHĨ NHƯ NHÀ KHOA HỌC MÁY TÍNH - Trang 166

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);

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.