JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java SE 討論區 » Swing/AWT/SWT/JFace  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友   
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
作者 Re:(特急)請問這個Exception是什麼意思,該如何解決 [Re:ggininder]
swchen1217





發文: 5
積分: 0
於 2018-08-23 11:59 user profilesend a private message to usersend email to swchen1217reply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
ggininder wrote:
意思是 你遇到超過索引的exception 你要讓他增加size

或者你根本沒用到,你可以覆寫 讓他遇到這個錯誤 不做事情

mmolis wrote:
估計是你在使用Collection介面的實例作為你儲存資料使用, 並在操作的時候發生了衝突的事情
1. 陣列長度為 n, 但卻寫了超過 n 的資料進去
2. 在 for loop 或 iterator 該資料的區塊內, 又因故去異動(刪除)該實例的資料
你可以再重新檢視一下你的程式邏輯吧

以下是我的程式碼
裡面的所有輸出System.out.println();都只是為了要測試的而已

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
void del(int i) {
      try{
        System.out.println("DEL");
        ingredients_add(i);
        qty[i]--;
        System.out.println("qty:"+qty[i]);
        small_total[i]=qty[i]*price[i];
        System.out.println("small_total:"+small_total[i]);
        lb_qty[i].setText(qty[i]+"");
        lb_small_total[i].setText(small_total[i]+"");
        smalltotal-=price[i];
        System.out.println("smalltotal:"+smalltotal);
        tf_ch_small_total.setText(smalltotal+"");
        order_sum--;
        System.out.println("order_sum:"+order_sum);
        tf_info_order_sum.setText(order_sum+"");
        total();
        if(qty[i]==0)
        {
          int k=0;
          for(int x=0;x<40;x++)
            System.out.print(list[x]+",");
          System.out.println();
          for(int n=0;n<40;n++)
          {
            if(list[n]==i){
              list[n]=-1;
              k=n;
              System.out.println("k:"+k);
              break;
            }
            System.out.println("not=-1");
          }
          for(int x=0;x<40;x++)
            System.out.print(list[x]+",");
          System.out.println();
          System.out.println(list[k]);
          System.out.println(list[k+1]);
          System.out.println(order_list_sum);
          order_list_sum--;
          System.out.println(order_list_sum);
          if(order_list_sum!=0 && list[k+1]!=-1)
          {
            for(int e=k;e<order_list_sum+1;e++)
            {
              System.out.println("AA");
              if(list[k+1]!=-1)
              {
                System.out.println("BB");
                tmp=list[e+1];
                list[e]=tmp;
              }
              else
                break;
            }
          }
          //list[order_list_sum]=-1;
          for(int x=0;x<40;x++)
            System.out.print(list[x]+",");
          System.out.println();
          sort();
        }
      }catch(Exception e){}
  }
  void sort()  {
    try{
//    tab_order_list.removeAll();
//    pn_list_1.removeAll();
//    pn_list_2.removeAll();
//    pn_list_3.removeAll();
//    pn_list_4.removeAll();
//    pn_list_5.removeAll();
//    tab_order_list.addTab("1", null, pn_list_1, null);
//    tab_order_list.addTab("2", null, pn_list_2, null);
//    tab_order_list.addTab("3", null, pn_list_3, null);
//    tab_order_list.addTab("4", null, pn_list_4, null);
//    tab_order_list.addTab("5", null, pn_list_5, null);
    //n=0;
    /*for(int i=0;i<order_list_sum;i++)
    {
      if(list[i]!=-1)
        n++;
      else
        break;
    }*/
    for(int a=0;a<53;a++)
    {
      pn_item[a].setVisible(false);
    }
    tab_order_list.updateUI();
    if(order_list_sum!=0)
    {
      item_sum2=0;
      for(int j=0;j<order_list_sum;j++)
      {
        pn_item[list[j]].setVisible(true);
        item_sum2++;
        if(item_sum2<=8)
        {
          pn_item[list[j]].setLocation(0, (item_sum2-1)*70);
          pn_list_1.add(pn_item[list[j]]);
          tab_order_list.setSelectedIndex(0);
        }else if(item_sum2<=16)
        {
          pn_item[list[j]].setLocation(0, (item_sum2-9)*70);
          pn_list_2.add(pn_item[list[j]]);
          tab_order_list.setSelectedIndex(1);
        }else if(item_sum2<=24)
        {
          pn_item[list[j]].setLocation(0, (item_sum2-17)*70);
          pn_list_3.add(pn_item[list[j]]);
          tab_order_list.setSelectedIndex(2);
        }else if(item_sum2<=32)
        {
          pn_item[list[j]].setLocation(0, (item_sum2-25)*70);
          pn_list_4.add(pn_item[list[j]]);
          tab_order_list.setSelectedIndex(3);
        }else if(item_sum2<40)
        {
          pn_item[list[j]].setLocation(0, (item_sum2-33)*70);
          pn_list_5.add(pn_item[list[j]]);
          tab_order_list.setSelectedIndex(4);
        }else if(item_sum2>=40)
        {
          pn_item[list[j]].setLocation(0, (item_sum2-33)*70);
          pn_list_5.add(pn_item[list[j]]);
          tab_order_list.setSelectedIndex(4);
          check_list_full();
        }
      }
      tab_order_list.updateUI();
    }
    }catch(Exception e){}
  }


由btn呼叫del(i)
並傳入要消去的品項編號
若該品項數量消去後等於0就將"list:陣列中位置改為-1
我用-1當作空的這樣好嗎還是要改成別的
用來控制品項順序的陣列"list"如下
1
int list[]={-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};

下面這段意思是把中間有-1(也就是空的)的後面的位置都往前移一個
EX:(數字只是亂打的)
原本2,6.11,5,3,42,9
呼叫del並傳入11 del(11);
2,6,-1,5,3,42,9
2,6,5,5,3,42,9
2,6,5,3,3,42,9
2,6,5,3,42,42,9
2,6,5,3,42,9,9
2,6,5,3,42,9,-1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if(order_list_sum!=0 && list[k+1]!=-1)
          {
            for(int e=k;e<order_list_sum+1;e++)
            {
              System.out.println("AA");
              if(list[k+1]!=-1)
              {
                System.out.println("BB");
                tmp=list[e+1];
                list[e]=tmp;
              }
              else
                break;
            }
          }

sort()是用來按"list"陣列的內容放各個品項的panel到TabbedPane的panel裡面
sort執行的順序是先把所有在TabbedPane的panel上面的各個品項的panel remove掉然後再按照list的順序add到上面並setLocation可是我發現removeAll()上面有小品項panel的大panel的時候就會跳例外
所以我就把removeAll()改成先全部setVisible(false)然後在add到上面並setLocation還有setVisible(true)這樣好像就不會跳例外了
可是後來又出現了
這是一個POS系統
上面程式碼裡面的以下部分我有測試過跟這個問題沒有關係
1
2
3
4
5
6
7
8
9
10
11
12
13
14
ingredients_add(i);
        qty[i]--;
        System.out.println("qty:"+qty[i]);
        small_total[i]=qty[i]*price[i];
        System.out.println("small_total:"+small_total[i]);
        lb_qty[i].setText(qty[i]+"");
        lb_small_total[i].setText(small_total[i]+"");
        smalltotal-=price[i];
        System.out.println("smalltotal:"+smalltotal);
        tf_ch_small_total.setText(smalltotal+"");
        order_sum--;
        System.out.println("order_sum:"+order_sum);
        tf_info_order_sum.setText(order_sum+"");
        total();

感覺有點複雜
感謝大家的幫忙
下面附上圖片
https://drive.google.com/open?id=1KlraYeFzGWz2vbQ9-ZQeRWFlNkTw_GGs
https://drive.google.com/open?id=1sM9mh2cXsVthZKSIuEuong_FFLnJqFYK


reply to postreply to post
話題樹型展開
人氣 標題 作者 字數 發文時間
402 (特急)請問這個Exception是什麼意思,該如何解決 swchen1217 2772 2018-08-23 06:35
350 Re:(特急)請問這個Exception是什麼意思,該如何解決 ggininder 40 2018-08-23 07:13
352 Re:(特急)請問這個Exception是什麼意思,該如何解決 swchen1217 91 2018-08-23 07:24
350 Re:(特急)請問這個Exception是什麼意思,該如何解決 AJavaLearner 23 2018-08-23 08:00
333 Re:(特急)請問這個Exception是什麼意思,該如何解決 ggininder 20 2018-08-23 08:02
344 Re:(特急)請問這個Exception是什麼意思,該如何解決 ggininder 389 2018-08-23 08:09
328 Re:(特急)請問這個Exception是什麼意思,該如何解決 swchen1217 130 2018-08-23 10:06
327 Re:(特急)請問這個Exception是什麼意思,該如何解決 ggininder 139 2018-08-23 10:11
340 Re:(特急)請問這個Exception是什麼意思,該如何解決 swchen1217 540 2018-08-23 10:13
319 Re:(特急)請問這個Exception是什麼意思,該如何解決 ggininder 64 2018-08-23 10:43
348 Re:(特急)請問這個Exception是什麼意思,該如何解決 swchen1217 6476 2018-08-23 11:59
338 Re:(特急)請問這個Exception是什麼意思,該如何解決 ynchang 148 2018-08-23 10:00
325 Re:(特急)請問這個Exception是什麼意思,該如何解決 mmolis 147 2018-08-23 10:59
» JWorld@TW »  Java SE 討論區 » Swing/AWT/SWT/JFace

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8