2013-09-21 31 views
0

您好再次堆社區, 我上的程序以圖形方式顯示的提示,存儲在一個二維數組,其正確的響應對口的工作 - 我開始通過調用菜單的創建對象:的Java Swing,進一步做大,同時發行

public static void main (String [] args){ 
    SwingUtilities.invokeLater(new Runnable(){ 
     public void run() { new Menu(); } 
    }); 
} 

在菜單我定義各種按鈕:

JButton chem3Button, chin1Button, mathstatButton//etc... 

隨後由隨後加入諸如工具提示和這樣的性質的一個動作偵聽器:

  mathstatButton.addActionListener(new ActionListener(){ 
     public void actionPerformed(ActionEvent j) { 
      new matstatMenu(); 
     } 
    }); 

其進而將控制傳遞到matstatMenu,這允許在數學的區域,在這種情況下只有一個的選擇,可用的:

  mathstatb1.addActionListener(new ActionListener(){ 
     public void actionPerformed(ActionEvent l) { 
      new SwingImplementation(2, 1); 
     }});   

,它發送檢體; 2(數學),和主題子集1(描述性統計),以SwingImplementation通過mathstatb1按鈕,通過這個循環懸掛該副本的統計數據數組oneRay:

 case 2: 
     switch(unit){ 
     case 1: 
      oneRay = new String[Master.MathaRay_Part2.length][2]; 
      for(int i = 0; (Master.MathaRay_Part2.length) > i; i++){ 
       oneRay[i][0] = Master.MathaRay_Part2[i][0]; oneRay[i][1] = 

Master.MathaRay_Part2[i][1];} break; 
     default: System.exit(0); break; 
     } break; 

,然後未能通過該做的,無限循環,儘管科技進步,其週期他事實上,數組Master.MathaRay_Part2已滿,並應通過上面的代碼完全複製。 爲什麼這樣做循環失敗,或者說,從來沒有退出?

do{ 
     System.out.println("C"); 
     pick = random.nextInt(oneRay.length); 
    }while((oneRay[pick][0]).isEmpty()); 

請,我只是一個擺動新手試圖創建一個程序來幫助自己在學校的同齡人,任何幫助將不勝感激。

+1

就個人而言,我會用我 MadProgrammer

+0

如果oneRay的每個元素的元素0最初是空的,那麼就沒有任何事情可以改變它。我會在進入'do'循環時檢查oneRay的狀態。 –

回答

0

我不確定你的問題是什麼 - 這裏沒有足夠的代碼讓我弄清楚;我對Master.MathaRay_Part2課一無所知。但是,執行以下操作應該會對您有所幫助,並且如果您將結果編輯到原始文章中,可以幫助我解決問題。

首先,添加下面的函數類具有do循環:

private static final String toTwoDArrayString(Object[][] arr) { 
    StringBuilder sb = new StringBuilder(); 
    sb.append('['); 
    boolean first = true; 
    for(Object[] row : arr) { 
     if (!first) { 
      // Requires Java 7. replace %n with either \n or \r\n for Java 6 
      sb.append(String.format(",%n ")); 
     } 
     first = false; 
     sb.append(Arrays.toString(row)); 
    } 
    sb.append(']'); 
    return sb.toString(); 
} 

其次,確保Master.MathaRay_Part2.toString()是一個有用的方法來實現,如果它是不是已經。在Eclipse中,你可以使用Right Click -> Source -> Generate toString()...

最後,立即do循環之前,請致電:

System.out.println(toTwoDArrayString(onepick));