none
回圈資料判斷 RRS feed

  • 問題

  • 當我groupid = 4 是時我想針對 groupid 跟4 有關的userid多找出來
    如 userid 7 , 8, 9, 但是 7 跟 8 又在groupid 中出現過所以又會找到userid = 10,
    但是10又在groupid 中出現所以userid 11,11也在groupid 中出現這又對到 userid 12...

    exaccid     groupid     userid     username    
    ---------- ---------- --------- -----------
    1 4 7 aaa
    2 4 8 bbb
    3 4 9 ccc
    4 7 10 ddd
    5 10 11 eee
    6 11 12 fff
    7 12 13 ggg
    8 12 14 hhh
    9 8 15 iii
      boolean flag = false;
    int temp = 0;
    int temp1 = 0;
    for(int i = 0; i < v_groupid.size(); i++){ // 所有資料 v_groupid = groupid , v_userid = userid

    for(int j = 0; j < vgroupid.size(); j++){ // vgroupid = 7 , 8 , 9

    if(vgroupid.get(j) == v_groupid.get(i)){
    System.out.println(exaccid.get(i) + " " + v_groupid.get(i) + " " + v_userid.get(i));
    temp = Integer.parseInt(v_userid.get(i).toString());
    }

    if(temp == Integer.parseInt(v_groupid.get(i).toString())){
    System.out.println(exaccid.get(i) + " " + v_groupid.get(i) + " " + v_userid.get(i));
    temp1 = Integer.parseInt(v_groupid.get(i).toString());
    temp = 0;
    }

    if( (temp1 == Integer.parseInt(v_userid.get(i).toString())) && (temp1 == Integer.parseInt(v_groupid.get(i).toString())) ){
    System.out.println(exaccid.get(i) + " " + v_groupid.get(i) + " " + v_userid.get(i));
    temp1 = 0;
    }

    out.println(v_groupid.get(i));
    }

    }
    這是我用上面的code找出來的資料還是不對請問在我的判斷上有那不對請指點
    From java convert to C++
    2009年9月8日 上午 11:20

解答

  • java版:
    List exaccid = Arrays.asList(new Integer[]{1, 2, 3, 4, 5, 6, 7, 8, 9});
    List v_groupid = Arrays.asList(new Integer[]{4, 4, 4, 7, 10, 11, 12, 12, 8});
    List v_userid = Arrays.asList(new Integer[]{7, 8, 9, 10, 11, 12, 13, 14, 15});
    
    ArrayList v_checkedGroupid = new ArrayList(); //記錄已查過的groupid
    for (int i = 0; i < v_groupid.size(); i++) { // 所有資料  v_groupid = groupid  , v_userid = userid
        Integer iGroupid = (Integer) v_groupid.get(i);
        if (v_checkedGroupid.contains(iGroupid)) { //如果此筆資料的groupid已查過,跳過此筆
            continue;
        }
        v_checkedGroupid.add(iGroupid); //將此groupid加入已查過的清單
        ArrayList vgroupid = new ArrayList();
        for (int j = 0; j < v_groupid.size(); j++) {
            if (((Integer) v_groupid.get(j)).equals(iGroupid)) {
                vgroupid.add(v_userid.get(j));
                System.out.println("exaccid=" + exaccid.get(j) + ", groupid=" + iGroupid + ", userid=" + v_userid.get(j));
            }
        }
        System.out.println("------------");
    }
    c#版
    List<int> exaccid = new List<int>(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 });
    List<int> v_groupid = new List<int>(new int[] { 4, 4, 4, 7, 10, 11, 12, 12, 8 });
    List<int> v_userid = new List<int>(new int[] { 7, 8, 9, 10, 11, 12, 13, 14, 15 });
    
    List<int> v_checkedGroupid = new List<int>(); //記錄已查過的groupid
    for (int i = 0; i < v_groupid.Count; i++)
    { // 所有資料  v_groupid = groupid  , v_userid = userid
        int iGroupid = v_groupid[i];
        if (v_checkedGroupid.Contains(iGroupid))
        { //如果此筆資料的groupid已查過,跳過此筆
            continue;
        }
        v_checkedGroupid.Add(iGroupid); //將此groupid加入已查過的清單
        List<int> vgroupid = new List<int>();
        for (int j = 0; j < v_groupid.Count; j++)
        {
            if (v_groupid[j] == iGroupid)
            {
                vgroupid.Add(v_userid[j]);
                Console.WriteLine("exaccid={0}, groupid={1}, userid={2}", exaccid[j], iGroupid, v_userid[j]);
            }
        }
        Console.WriteLine("------------");
    }
    結果(如果我沒誤解的話):
    exaccid=1, groupid=4, userid=7
    exaccid=2, groupid=4, userid=8
    exaccid=3, groupid=4, userid=9
    ------------
    exaccid=4, groupid=7, userid=10
    ------------
    exaccid=5, groupid=10, userid=11
    ------------
    exaccid=6, groupid=11, userid=12
    ------------
    exaccid=7, groupid=12, userid=13
    exaccid=8, groupid=12, userid=14
    ------------
    exaccid=9, groupid=8, userid=15
    ------------
    • 已標示為解答 Lolota Lee 2009年9月11日 上午 06:34
    2009年9月9日 上午 02:59

所有回覆

  • 說真得你的描述雖然寫得很多,但太文言文了,實在看不懂你的問題,請白話文點,不然可能沒人能夠回覆.
    2009年9月9日 上午 12:04
  • 這裡是 C# 的討論區,你貼 Java 程式出來 ...
    初學不是問題,但用不正確的態度來問問題,那就是很大的問題。
    2009年9月9日 上午 12:37
    版主
  • 小朱真的很認真的看,在處理.還看得出是Java.
    我題目都看不懂了.下面的Code就不用看了.
    2009年9月9日 上午 01:07
  • java版:
    List exaccid = Arrays.asList(new Integer[]{1, 2, 3, 4, 5, 6, 7, 8, 9});
    List v_groupid = Arrays.asList(new Integer[]{4, 4, 4, 7, 10, 11, 12, 12, 8});
    List v_userid = Arrays.asList(new Integer[]{7, 8, 9, 10, 11, 12, 13, 14, 15});
    
    ArrayList v_checkedGroupid = new ArrayList(); //記錄已查過的groupid
    for (int i = 0; i < v_groupid.size(); i++) { // 所有資料  v_groupid = groupid  , v_userid = userid
        Integer iGroupid = (Integer) v_groupid.get(i);
        if (v_checkedGroupid.contains(iGroupid)) { //如果此筆資料的groupid已查過,跳過此筆
            continue;
        }
        v_checkedGroupid.add(iGroupid); //將此groupid加入已查過的清單
        ArrayList vgroupid = new ArrayList();
        for (int j = 0; j < v_groupid.size(); j++) {
            if (((Integer) v_groupid.get(j)).equals(iGroupid)) {
                vgroupid.add(v_userid.get(j));
                System.out.println("exaccid=" + exaccid.get(j) + ", groupid=" + iGroupid + ", userid=" + v_userid.get(j));
            }
        }
        System.out.println("------------");
    }
    c#版
    List<int> exaccid = new List<int>(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 });
    List<int> v_groupid = new List<int>(new int[] { 4, 4, 4, 7, 10, 11, 12, 12, 8 });
    List<int> v_userid = new List<int>(new int[] { 7, 8, 9, 10, 11, 12, 13, 14, 15 });
    
    List<int> v_checkedGroupid = new List<int>(); //記錄已查過的groupid
    for (int i = 0; i < v_groupid.Count; i++)
    { // 所有資料  v_groupid = groupid  , v_userid = userid
        int iGroupid = v_groupid[i];
        if (v_checkedGroupid.Contains(iGroupid))
        { //如果此筆資料的groupid已查過,跳過此筆
            continue;
        }
        v_checkedGroupid.Add(iGroupid); //將此groupid加入已查過的清單
        List<int> vgroupid = new List<int>();
        for (int j = 0; j < v_groupid.Count; j++)
        {
            if (v_groupid[j] == iGroupid)
            {
                vgroupid.Add(v_userid[j]);
                Console.WriteLine("exaccid={0}, groupid={1}, userid={2}", exaccid[j], iGroupid, v_userid[j]);
            }
        }
        Console.WriteLine("------------");
    }
    結果(如果我沒誤解的話):
    exaccid=1, groupid=4, userid=7
    exaccid=2, groupid=4, userid=8
    exaccid=3, groupid=4, userid=9
    ------------
    exaccid=4, groupid=7, userid=10
    ------------
    exaccid=5, groupid=10, userid=11
    ------------
    exaccid=6, groupid=11, userid=12
    ------------
    exaccid=7, groupid=12, userid=13
    exaccid=8, groupid=12, userid=14
    ------------
    exaccid=9, groupid=8, userid=15
    ------------
    • 已標示為解答 Lolota Lee 2009年9月11日 上午 06:34
    2009年9月9日 上午 02:59
  • 謝謝你的解答很有用
    From java convert to C++
    2009年11月26日 上午 08:42