Một tuyên bố if
có dạng:
if (condition) statement
Bạn hiện đã có hai điều kiện trong ngoặc vuông ... mà cũng kết thúc chỉ định các giá trị, có thể không phải là những gì bạn muốn.
sửa chữa Vì vậy, đầu tiên để có được nó để biên dịch:
if ((First_Relation = true) & (Second_Relation = true))
Sau đó thay đổi công việc để kiểm tra sự bình đẳng, vì nếu không nó sẽ chỉ đơn giản là gán true
để cả hai biến và tình trạng này sẽ vượt qua bất kể giá trị trước đó của họ:
if ((First_Relation == true) & (Second_Relation == true))
Sau đó, loại bỏ sự so sánh với các hằng số boolean:
if ((First_Relation) & (Second_Relation))
Sau đó, loại bỏ dấu ngoặc không cần thiết:
if (First_Relation & Second_Relation)
Sau đó thực hiện các biến theo Java ước đặt tên:
if (firstRelation & secondRelation)
Sau đó sử dụng thông thường hơn &&
thay vì &
-&&
là chập mạch, và hầu như luôn luôn những gì bạn muốn:
if (firstRelation && secondRelation)
Bây giờ bạn vẫn có một thư mục bán kết tràng ectly sau khi điều kiện if
của bạn, mà làm cho nó vô nghĩa - nó sẽ luôn luôn thực hiện các tuyên bố System.out.println
, bởi vì đó không phải là một phần của tuyên bố if
. Bạn thể chỉ loại bỏ các dấu chấm phẩy, nhưng tôi muốn thêm niềng răng cho rõ ràng:
if (firstRelation && secondRelation) {
System.out.println("insert text here");
}
Tiếp theo, lưu ý rằng bạn chỉ thực sự khởi tạo các biến của bạn nếu điều kiện là đúng - vì vậy bạn sẽ thấy hiện có được một lỗi biên dịch thời gian cho cố gắng để đọc các biến mà không chắc chắn được giao.
Thứ nhất, sửa chữa sự phân công rõ ràng:
// Names changed to follow conventions
boolean firstRelation = p > q;
boolean secondRelation = r < s;
... và các mã trên nên được tốt.
Tiếp theo, tại chỗ bạn thực sự đạt được rất ít thực sự từ các biến phụ đó.Inline các điều kiện thay vì:
if (p > q && r < s) {
System.out.println("Given the values for p,q,r, and s the expression "
+ "(p > q) && !(r < s) evaluates to ";
}
Tại thời điểm này, nó trở nên rất rõ ràng rằng có một lỗi nữa - bởi vì thông điệp của bạn nói về !(r < s)
nhưng tình trạng này chỉ r < s
là. Vì vậy, bạn cần phải quyết định những gì bạn muốn đạt được, và làm cho mã và thông điệp phản ánh cùng một điều. Lưu ý rằng bạn cũng không hoàn thành tin nhắn. Thật vậy, bạn có thể đơn giản hóa toàn bộ nội dung:
System.out.println("Given the values for p,q,r, and s the expression "
+ "(p > q) && !(r < s) evaluates to " + ((p > q) && !(r < s));
... hoặc bất kỳ điều gì bạn muốn biểu hiện thực sự là.
'First_Relation == true' trong' if' – Ashok
Tại sao mọi người bỏ phiếu cho câu hỏi? Nó nêu rõ vấn đề rõ ràng như người hỏi có thể, và thể hiện nỗ lực. Không phải mọi câu hỏi đều phải là về các chủ đề nâng cao hoặc nhắm mục tiêu các lập trình viên nâng cao. – shovavnik
Ý bạn là, câu lệnh if thứ ba? – Raedwald