所以即时尝试在java中创建一个程序,它将创建一个10乘10的矩阵,每个元素随机显示1或0。以下是我到目前为止的情况:
package random.matrix;
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
class ex2 extends JFrame {
class Random {
GridLayout setLayout= new GridLayout(10, 10);
for (int i = 0; i < 10; i++) {
int number = (int) (Math.random() * 2);
String str = Integer.toString(number);
add(new JLabel(str, JLabel.CENTER));
}
}
public static void main(String[] args) {
JFrame frame = new ex2();
frame.setTitle("RandomMatrix");
frame.setSize(400, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
据我所知,这个程序应该运行得很好。但是,每当我尝试时,它都会说“非法启动类型”,特指for循环线。任何人都可以帮我解决这个问题吗?我从来没有遇到过这样的错误。
答案 0 :(得分:5)
您需要将代码放在代码块中,例如方法或构造函数,而不是内部类的类块
/**
* TODO: Refactor later NOT to extend from JFrame
*/
class MyFrame extends JFrame {
void initComponents() {
GridLayout setLayout = new GridLayout(10, 10);
for (int i = 0; i < 10; i++) {
...
}
}
...
}
答案 1 :(得分:1)
您不能在类定义中包含任意语句。也许你想把它放在构造函数中?
class Random {
public Random() {
GridLayout setLayout = new GridLayout(10, 10);
for (int i = 0; i < 10; i++)
{
int number = (int) (Math.random() * 2);
String str = Integer.toString(number);
setLayout.add(new JLabel(str, JLabel.CENTER));
}
}
}
或者,您可以创建另一种方法并将其放在那里。