0

你好,堆栈社区,我正在开发一个以图形方式显示提示的程序,存储在 2D 数组中,以及它们的正确响应对应项 - 我首先调用 Menu 对象的创建:

    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);
        }});        

它通过 mathstatb1 按钮将主题 2(数学)和主题子集 1(描述性统计)发送到 SwingImplementation,以飞过将统计数组复制到 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;

然后无法通过这个 do-loop 进行,尽管数组 Master.MathaRay_Part2 已满并且应该完全复制上述代码,但该循环会无限循环。为什么这个循环失败,或者更确切地说,永远不会退出?

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

拜托,我只是一个摇摆新手,试图创建一个程序来帮助自己和学校的同龄人,任何帮助都将不胜感激。

4

1 回答 1

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));
于 2013-09-21T22:31:13.743 回答