Java: bool + int

Oct 18 2020

มีวิธีทำให้ Java ทำงานร่วมกับการเพิ่มและการประเมินบูลีน / จำนวนเต็มหรือไม่? เฉพาะเจาะจงมากขึ้น C ++ มีคุณสมบัติที่เหมาะสมซึ่งจะทำให้คำสั่ง if สั้นลง

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

เทียบเท่ากับ

while (n--)
    cout << n;

หรือแทนที่จะเป็น:

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

หนึ่งสามารถมี

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

มีวิธีทำคล้ายกับใน Java หรือไม่?

คำตอบ

3 ArvindKumarAvinash Oct 18 2020 at 17:02

คุณสามารถใช้ตัวดำเนินการ ternary ใน Java เพื่อให้ได้ผลเช่นเดียวกัน

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

เอาท์พุต:

0
1
Polygnome Oct 18 2020 at 17:06

รหัสมักจะอ่านมากกว่าเขียน ในขณะที่คุณสามารถใช้ตัวดำเนินการ ternary ได้ แต่ความหมายของสิ่งนี้จะลดลงจนเพิ่มขึ้นcountหากxเท่ากับyเท่านั้น ดังนั้นวิธีที่อ่านง่ายที่สุดในการเขียนสิ่งนี้คือใช้:

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

การใช้กลอุบายเช่นเดียวกับcount += (x==y)ในภาษาอื่น ๆ ถือเป็นแนวทางปฏิบัติที่ไม่ดีอยู่แล้วเนื่องจากทำให้ตรรกะสับสน เพิ่มประสิทธิภาพสำหรับการอ่านไม่ใช่การเขียน