2012-02-05 32 views
2

如何將2d數組的單個列轉換爲ArrayList?如何將2d數組的單個列轉換爲ArrayList?

我有這樣的代碼:

 for (int i = 0; i < lordStats[0].length; i++) 
     troopList.add (lordStats[i][2]); 
//trooplist is a list and lordstats is a 2d array, they are both Strings 

,但它給了我很多的錯誤,我該怎麼做。

這些都是我的錯誤,我能弄清楚的是我陣列中的某些東西已經搞亂了。請注意,沒有這兩行代碼,程序運行良好。

線32-33

for (int i = 0; i < lordStats[0].length; i++) 
    troopList.add (lordStats[i][2]); 

錯誤:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
    at arsenalLord.arsenalLordGui(arsenalLord.java:32) 
    at arsenalLord.loader(arsenalLord.java:18) 
    at siegeText$1.actionPerformed(siegeText.java:41) 
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028) 
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351) 
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) 
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) 
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) 
    at java.awt.Component.processMouseEvent(Component.java:6373) 
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) 
    at java.awt.Component.processEvent(Component.java:6138) 
    at java.awt.Container.processEvent(Container.java:2085) 
    at java.awt.Component.dispatchEventImpl(Component.java:4735) 
    at java.awt.Container.dispatchEventImpl(Container.java:2143) 
    at java.awt.Component.dispatchEvent(Component.java:4565) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4621) 
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4282) 
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4212) 
    at java.awt.Container.dispatchEventImpl(Container.java:2129) 
    at java.awt.Window.dispatchEventImpl(Window.java:2478) 
    at java.awt.Component.dispatchEvent(Component.java:4565) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:679) 
    at java.awt.EventQueue.access$000(EventQueue.java:85) 
    at java.awt.EventQueue$1.run(EventQueue.java:638) 
    at java.awt.EventQueue$1.run(EventQueue.java:636) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) 
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98) 
    at java.awt.EventQueue$2.run(EventQueue.java:652) 
    at java.awt.EventQueue$2.run(EventQueue.java:650) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:649) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) 
+0

你得到什麼錯誤? – rtheunissen 2012-02-05 07:42:52

+0

那麼從上面的錯誤來看,好像代碼在AWT組件上有錯誤。你能告訴或準確地發佈第32行的內容嗎? – javaCity 2012-02-05 07:48:01

+1

當然,數組必須被初始化。數組允許值,但有些列表不。 – Stephan 2012-02-05 07:52:21

回答

2

沒有必要做一個循環,你可以直接調用Arrays.asList(array[])方法。如:這應該工作:

troopList = Arrays.asList(lordStats[2]); 

其中troopList是List<String>

+0

這不是完全錯過OP是列表中第二個*列*的事實嗎?這給你第二排,這顯然更容易。 – 2012-02-05 08:19:15

+0

我可以更改數組以適合他的代碼。 – Russell 2012-02-05 08:23:40