Toán tử 3 ngôi trong C#

Hiện tại em mới học C#.Biết ngoài if else ra có toán tử 3 ngôi cũng khá hữu ích. Đang có một chỗ vướng mắc là không biết Làm sao để lồng ghép toán tử 3 ngôi vào để thực hiện nhập vào một điểm .
[8-10] là Giỏi
[6.5-8) Là Khá
[5-6.5) Là Trung Bình
Dưới 5 là Kém .
Rất mong các anh chị hướng dẫn ạ .

1 Like

Em biết được gì về toán tử 3 ngôi rồi :wink: Thử giải thích + ví dụ để mọi người biết em đang còn thiếu/chưa hiểu phần nào của nó, đưa ra lời giải cho câu hỏi của em thì không giúp được gì cho em đâu.

n là số nhập vào:

string result = n>=5?( n>=6.5?(....) : "Trung binh") : "Kem";

Bạn tự làm tiếp nhé, lồng vào tương tự thôi.

Toán tử 3 ngôi có thể dùng thay cho if else
Biến = ( điều kiện )? (Lệnh1 thực thi nếu đk đúng) : (lệnh 2 thực thi nếu đk sai);
Đó là những gì e biết hiện nay

Thank you bạn . Mình cũng đang làm

mình làm bị lỗi dấu : ở giữa dòng fix lại kj bạn

Không cần dấu ngoặc đâu.

string kq=diem>=8?"Giỏi":diem>=6.5?"Khá":diem>=5?"Trung bình":"Kém";
// Nếu cần dấu ngoặc cho dễ hiểu:
string kq=diem>=8?"Giỏi":(diem>=6.5?"Khá":(diem>=5?"Trung bình":"Yếu"));

// Cũng có thể:
string kq=diem<5?"Yếu":diem<6.5?"Trung bình":diem<8?"Khá":"Giỏi";
2 Likes
string ketqua = diem >= 8 ? "Giỏi" : diem >= 6.5 ? "Khá" : diem >= 5 ? "Trung Bình" : "Yếu";
Console.WriteLine("Điểm ={0}==>{1}", diem, ketqua);

This post was flagged by the community and is temporarily hidden.

1 Like

Cà khịa con mắt người đọc còn do cách trình bày nữa, toán tử ba ngôi thì thò thụt đúng cách cũng ổn mà, mỗi ngôi 1 dòng thôi.

5 Likes

Không, đi làm không ai để cho code toán tử 3 ngôi lồng nhau đâu.

Có thể reply này là off-topic.

Nhưng, nếu bạn chụp mũ rằng ai code toán tử 3 ngôi cũng là trẻ con, sinh viên, thì chúng ta không có gì để tranh luận cả.

Chẳng phải tự nhiên mà IDE (cụ thể là IntelliJ IDEA) mặc định gợi ý sử dụng toán tử 3 ngôi thay cho if-else khi có thể mà không phải chiều ngược lại.

4 Likes

This post was flagged by the community and is temporarily hidden.

3 Likes

Nó xấu hay đẹp, dễ đọc hay khó đọc là do người code, không phải do công cụ.

string kq = diem >= 8 ? "Giỏi"
          : diem >= 6.5 ? "Khá"
          : diem >= 5 ? "Trung bình"
          : "Kém";

string kq;
if (diem >= 8)
    kq = "Giỏi";
else if (diem >= 6.5)
    kq = "Khá"
else if (diem >= 5)
    kq = "Trung bình"
else
    kq = "Kém";
8 Likes

Ok cậu đúng. Cậu cứ giữ quan điểm đấy mà làm thôi.

Đúng sai không quan trọng bằng việc phát ngôn của anh đầu độc người khác, dạy sai người khác. Sau này lại có nguy cơ thành đồng nghiệp của tôi.

6 Likes

Mình vẫn dùng 3 ngôi lồng nhau bình thường.

Khó hiểu do cách viết và do chưa có đủ hiểu biết về nó.

5 Likes

thật ra bạn đó nói vậy cũng không hoàn toàn sai. Không nên lồng toán tử 3 ngôi quá nhiều vì có thể ở thời điểm này thì bạn có thể format đẹp như vậy được nhưng khi thay đổi yêu cầu sẽ phải sửa lại sẽ cực hơn. Đôi lúc sẽ phải viết lại toàn bộ luôn do yêu cầu thay đổi. Tiết kiệm 1 2 dòng code cũng chẳng để làm gì mà nên viết sao cho dễ hiểu nhất có thể chứ không có đúng hay sai gì ở đây cả

6 Likes

Cái này khác nào cãi nhau về thụt 2 spaces hay 4 spaces đâu :))

5 Likes

Ý kiến cá nhân thôi nha, mình vẫn vote sử dụng if else hơn, vì có có ưu điểm dễ debug hơn là tenary operator.

Nếu dùng tenary operator thì nguyên khối logic là một biểu thức (expression), debugger xem biểu thức là 1 câu lệnh, thực thi tất cả toán hạng dù lồng ghép thế nào. Nên việc xem thứ tự các biểu thức con thực hiện theo thứ tự như thế nào là bất khả thi.

Còn việc dùng if else, nếu tuân thủ đúng convention, mình có thể sử dụng step over để chạy từng điều kiện if, câu lệnh trong if, điều kiện else if, câu lệnh trong else if,… Như vậy việc kiểm soát luồng chạy dễ dàng hơn.

7 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?