-2

我还在学习编程

我正在尝试在列表中获取客户数据。所以我可以从索引中获得价值,但它只能获得第一个客户。索引不会增加,我仍然很困惑,我已经移动变量以增加索引不起作用,也许我的逻辑不正确。这是代码,告诉我哪里不对..?? 谢谢你的帮助和解释

public void getJamVSpot()
{
    var listJamAwal = new List<String>();
    var listJamAkhir = new List<String>();
    var listNota = new List<int>();

    DateTime tglSewa = dtp_tglSewa.Value.Date;
    int r = 0;
    String ja = String.Empty;
    String jb = String.Empty;
    int n = 0;
    int indexUp = 0;

    if (dtp_tglSewa.Value.Date == jl.getTglJadwalVspot(tglSewa, lap) && rdb_Lapangan_VSpot.Checked == true || rdb_rumputSintetis.Checked == true)
    {

        IEnumerator<String> jAwal = jl.getJamAwalbyDate(tglSewa, lap);
        while (jAwal.MoveNext())
        {
            listJamAwal.Add(jAwal.Current);

        }
        IEnumerator<String> jAkhir = jl.getJamAkhirbyDate(tglSewa, lap);
        while (jAkhir.MoveNext())
        {
            listJamAkhir.Add(jAkhir.Current);

        }
        IEnumerator<int> nota = jl.getNota(tglSewa, lap);
        while (nota.MoveNext())
        {
            listNota.Add(nota.Current);

        }

        ja = listJamAwal[indexUp];
        jb = listJamAkhir[indexUp];
        n = listNota[indexUp];

        int count = jl.countNota(n);
        String penyewa = jl.getNamaPenyewa(n);
        String no_kontak = jl.getNomorKontak(n);
        String status = jl.getStatusSewa(n);

        for (int i = 1; i <= count; i++)
        {
            foreach (DataGridViewRow row in dgv_Jadwal_Sewa.Rows)
                if (row.Cells[0].Value.ToString().Equals(ja))
                {
                    r = row.Index;

                    row.Cells[2].Value = penyewa;
                    row.Cells[3].Value = no_kontak;
                    row.Cells[4].Value = status;

                    if (ja != jb)
                    {
                        ja = jl.getJamAkhirbyJamAwal(ja);
                        row.Cells[2].Value = penyewa;
                        row.Cells[3].Value = no_kontak;
                        row.Cells[4].Value = status;
                        //dgv_Jadwal_Sewa.Rows[r].Selected = true;

                    }
                    break;
                }
        }

    } indexUp++;
}

在此处输入图像描述

4

3 回答 3

1

当您增加indexUp变量时,您不再使用它。

在您的代码中,您只是恢复第一项 (0),使用该值(在循环中)做一些事情并退出。

例如,你可以用这个循环来包装你的东西:

    for (int indexUp = 0; indexUp < listJamAwal.Count; indexUp++)
    {
        ja = listJamAwal[indexUp];
        jb = listJamAkhir[indexUp];
        n = listNota[indexUp];

        int count = jl.countNota(n);

        String penyewa = jl.getNamaPenyewa(n);
        String no_kontak = jl.getNomorKontak(n);
        String status = jl.getStatusSewa(n);

        for (int i = 1; i <= count; i++)
        {
            foreach (DataGridViewRow row in dgv_Jadwal_Sewa.Rows)
            {
                if (row.Cells[0].Value.ToString().Equals(ja))
                {
                    r = row.Index;

                    row.Cells[2].Value = penyewa;
                    row.Cells[3].Value = no_kontak;
                    row.Cells[4].Value = status;

                    if (ja != jb)
                    {
                        ja = jl.getJamAkhirbyJamAwal(ja);
                        row.Cells[2].Value = penyewa;
                        row.Cells[3].Value = no_kontak;
                        row.Cells[4].Value = status;
                        //dgv_Jadwal_Sewa.Rows[r].Selected = true;
                    }

                    break;
                }
            }
        }
    }
于 2013-06-17T20:48:07.123 回答
1

您如何访问这些项目有两个问题:

  • 您在循环外分配变量。这将获得索引当时指向的值,并且稍后更改索引变量不会更改分配给变量的内容。count您必须在循环内分配变量,当然在循环开始之前需要的变量除外。

  • indexUp当您不再使用它时,您正在循环之后增加变量。您必须将它放在循环中,以便它可以在下一次迭代中用于将新值读入变量中。

于 2013-06-17T20:53:50.323 回答
0

我看不出将第一个循环与“i”一起使用,然后将第二个循环与 foreach 一起使用。它完全错误 - 你正在做同样的事情“计数”次!您还需要更改 penyewa、no_kontak、状态,因为您在循环中使用相同的值

此外,我从未见过如此混乱和不明确的变量命名,如果你想让其他人使用它,你应该改变它:D

于 2013-06-17T20:59:06.910 回答