Java: bool + int

Oct 18 2020

Có cách nào để làm cho Java hoạt động với phép cộng và đánh giá boolean / số nguyên không? Cụ thể hơn, C ++ có một tính năng thích hợp giúp rút ngắn nhiều câu lệnh if.

for (int i = 0; i < n; ++i)
    cout << i;

Tương đương với

while (n--)
    cout << n;

Hoặc, thay vì:

for (int i = 0; i < n; ++i)
    if (x == y)
        count++;

Người ta có thể có

for (int i = 0; i < n; ++i)
    count += (x==y);

Có cách nào để làm điều gì đó tương tự như trong Java không?

Trả lời

3 ArvindKumarAvinash Oct 18 2020 at 17:02

Bạn có thể sử dụng toán tử bậc ba trong Java cho hiệu quả tương tự.

public class Main {
    public static void main(String[] args) {
        int x = 5, y = 10, count = 0;
        count += x == y ? 1 : 0;
        System.out.println(count);

        x = 10;
        count += x == y ? 1 : 0;
        System.out.println(count);
    }
}

Đầu ra:

0
1
Polygnome Oct 18 2020 at 17:06

Mã thường được đọc nhiều hơn được viết. Trong khi bạn có thể sử dụng toán tử bậc ba, ngữ nghĩa của toán tử này chỉ tăng lên countnếu xbằngy . Vì vậy, cách dễ đọc nhất để viết điều này là sử dụng:

for (int i = 0; i < n; ++i)
   if (x == y) count++;

Thực hiện các thủ thuật như count += (x==y)trong các ngôn ngữ khác là một cách thực hành không tốt vì nó làm xáo trộn logic. Tối ưu hóa cho việc đọc, không phải viết.