30/09/2018, 18:26

Lệnh rẽ nhánh if else trog java

Ac cho em hỏi nếu em viết

public void TinhTien()
{
float tongtien;
if (LoaiXe == “nho” || LoaiXe == “Nho”)
{
tongtien = 15 * NgaySD + (CtmKhiTra - CtmKhiThue);
}
else (LoaiXe == “to” || LoaiXe == “To”)
{
tongtien = 20 * NgaySD + 2 * (CtmKhiTra - CtmKhiThue);
}
Console.Write("Tong tien: " + tongtien);
}
thì> Console.Write("Tong tien: " + tongtien); sẽ k cho ra được ra trị nếu k khởi tạo float tongtien=0;

còn nếu em khai báo

public void ThanhToan()
{
float TienThue;
if (LoaiXe == “Nho” || LoaiXe == “nho”)
{
TienThue = 15 * NgaySD + (CtmLucTra - CtmLucThue);
}
else
{
TienThue = 20 * NgaySD + 2 * (CtmLucTra - CtmLucThue);
}
Console.WriteLine("Tong tien: "+TienThue);
}
thì lai không cần khởi tạo tongtieen=0
vậy sự khác nhau giữa hai hàm này là gì ạ

vũ xuân quân viết 20:42 ngày 30/09/2018

else (LoaiXe == “to” || LoaiXe == “To”)

Cái này thấy không đúng cú pháp mà sao chạy được vậy.
Em chỉnh code lại cho dễ nhình.
Anh nhìn thấy chóng cả mặt luôn

2 đoạn code trên có sự khác nhau.

  • Đoạn code 1: Dùng IF … Esle IF …: Trong trường hợp không thỏa mãn 2 điều kiện thì giá trị tongtien sẽ không có.
  • Đoạn code 2: Dùng IF… Esle…: giá trị của tongtien luôn rơi vào 1 trong 2 điều kiện trên nên sẽ có giá trị.

Lần sau em chịu khó chạy debug sẽ thấy được sự khác biệt. Tự mình chạy debug, tự mình suy luận sẽ tìm thấy ngay kết luận.

David Tom viết 20:30 ngày 30/09/2018

thanks anh
em hiểu rồi

Bài liên quan
0