Console.WriteLine("(x,y)=({0},{1})", x, y); có nghĩa là gì?

Em chưa hiểu cái đoạn code trong hàm

public void Display()
{
    Console.WriteLine("(x,y)=({0},{1})", x, y);
}

Đây là Class

namespace ClassPoint
{
    class Point
    {
        private double x, y;
        public void lnit(double x = 0, double y = 0)
        {
            this.x = x;
            this.y = y;
        }
        public void Move(double dx, double dy)
        {
            x += dx;
            y += dy;
        }
        public void Display()
        {
            Console.WriteLine("(x,y)=({0},{1})", x, y);
        }
        static void Main(string[] args)
        {
            Point A = new Point();
            A.lnit(2, 3);
            A.Display();
            A.Move(3, 4);
            A.Display();
            Console.Read();
        }
    }
}

Anh chị nào nói qua giúp em tí được không ạ! code em làm thì đã chạy được rồi nhưng cái câu lệnh trong hàm Display() em chưa hiểu ý nghĩa.

Console.WriteLine thì in ra màn hình rồi nhưng cái đoạn : “(x,y)=({0},{1})” là thế nào ạ, tại giờ em mới tự tìm hiều nên những câu lệnh đơn giản này em chưa hiểu được ạ.

Trong câu lệnh Console.WriteLine thì {0} sẽ được thay thế bởi giá trị của x, tượng tự {1} được thay bằng y

Console.WriteLine("(x,y)=({0},{1})", x, y);

@lht nghiên cứu lại cách đặt một câu hỏi rõ ràng hơn nhé. Nhớ dùng Markdown để post code

1 Like

Nhưng em có khởi tạo giá trị cho điểm A đầu tiên là :

Point A = new Point();
A.lnit(2, 3);

rồi mà anh @ltd, thì {0} thay cho x, và {1} thay cho y làm gì nữa ạ.
Dạ lần sau em sẽ sữa đổi.

Như em đã biết lệnh WriteLine dùng để in ra ngoài màn hình. Cái đoạn {0} dùng để cho C# biết em muốn in giá trị x nằm ở đâu, ở đầu câu, cuối câu, hay trong trường hợp của em là nằm giữa dấu () và cách nhau bởi dấu ,

Thì nó sẽ in ra được giá trị như sau với x = 2 và y = 3

(x,y) = (2,3)
1 Like

Em thay {0} trong lệnh WriteLine bằng {1} thì nó in ra x = 3 và y = 3 . Còn thay {0} bằng{2}``` thì chương trình báo lỗi. Em vẫn chưa hiểu rõ ý anh nói lắm. Em mới tìm hiểu nên đang kém. Mong anh nói kỹ hơn giúp em 1 chút ạ!

Bạn nên xem lại detail của hàm để hiểu rõ.

Em thay {0} trong lệnh WriteLine bằng {1} thì nó in ra x = 3 và y = 3

x và y sẽ được đánh số là 0 và 1 theo thứ tự trong hàm WriteLine.
Nếu như bạn code Console.WriteLine("(x,y)=({0},{1})", y, x);. Thì y sẽ được đánh số là 0, x sẽ được đánh số là 1.
{n} có thể hiểu đơn giản là lấy giá trị có số thứ tự n.

Còn thay {0} bằng{2}` thì chương trình báo lỗi

Mình chỉ thêm vào 2 biến là x và y nên không có biến nào được đánh số là 2 cả. Nên sẽ có lỗi.

2 Likes

Tức là Console.WriteLine("(x,y)=({0},{1})", x, y); thì x sẽ hiển thị trước : (x,y) = (2,3). Còn em đổi 0 cho 1 thì y hiện trước đúng không @Rok_Hoang? Em đã thử đổi 0 cho 1 và thấy y nó hiện trước :
(x,y) = (3,2). Như thế này thì x nhận giá trị là 3 hay 2 à anh?

Bạn có thể cho show dòng code ra đây được không. Cần làm rõ là x và y sẽ không nhận giá trị gì cả (giá trị x và y sẽ không bị thay đổi).
Chỉ do cú pháp mà nó sẽ in ra khác nhau thôi.

x không liên quan gì ở đây cả. xy là biến. hàm WriteLine Không đổi giá trị của xy, nó chỉ in ra mà thôi. Nên không có chuyện x nhận giá trị.

Cái được nhận giá trị ở đây là {0}{1} tùy vào vị trí của biến được đặt phía sau dấu ,.

Ở đây

  • x đứng trước, nên sẽ có vị trí 0,
  • y đứng sau nên có vị trí 1

Còn nếu cho số 2 vào thì không có giá trị gì cả

Còn nếu nghịch đảo

1 Like

Console.WriteLine("(x,y)=({0},{1})", x, y); nó sẽ hiện (x,y) = (2,3)
Console.WriteLine("(x,y)=({1},{0})", x, y); nó sẽ hiện (x,y) = (3,2)
Console.WriteLine("(x,y)=({1},{1})", x, y); nó sẽ hiện (x,y) = (3,3)
Nên em chưa hiểu lắm @Rok_Hoang ạ!

@lht em cố gắng đọc thật kỹ các câu trả lời và suy nghĩ thật kỹ, không nên thay đổi các giá trị liên tục để xem giá trị mà không suy nghĩ.

1 Like

Dạ em cảm ơn a @ltd, @Rok_Hoang ạ. Em xem lại đã.

Cám ơn a @ltd nhiều ạ. A minh họa 3 hình vẽ như thế em hiểu rồi ạ. Đơn giản vậy mà em cứ nghĩ đâu đâu.

2 Likes

Hehe, tại anh thấy em comment liên tục, tốc độ comment khá nhanh nên anh đoán là em không có đọc các câu trả lời một cách cẩn thận. :smile:

Em bấm vào dấu trên trả lời nào mà em thấy đúng nhất để chọn đấy làm câu trả lời đúng.

P/S: Chỉ có thể chọn một câu trả lời đúng mà thôi.

1 Like

Dạ. Tại em cứ comment vậy mà không suy nghĩ đi ạ. Giờ mới học mà đang non kém thế này không biết em có biết lập trình không nữa. A @ltd cho em 1 lời khuyên với. Em 25 tuổi rồi.huhu

@lht tiếp tục đọc topic này: Lập trình vui vẻ

This topic is now closed. New replies are no longer allowed.

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