嗨我想让字母x出现在第1-4行,字母y出现在第7-10行。由于某些原因,当我把else而不是else时,它可以工作,如果是这样,除了1-4之外的每一行都会得到“y”。它标记了else读取并说要删除此标记并说Null Pointer Exception并且我在第26行得到错误,带有frame.add的那个
import java.awt.Color;
import java.awt.GridLayout;
import java.util.Random;
import java.util.Scanner;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class ButtonGrid {
JFrame frame=new JFrame();
JButton[][] grid;
public ButtonGrid(int width, int length){
Random r=new Random();
int w=r.nextInt(13-1)+1;
frame.setLayout(new GridLayout(width,length));
grid=new JButton[width][length];
Scanner g = new Scanner(System.in);
for(int y=0;y<length;y++){
for(int x=0;x<width;x++){
if (y < 4) {
grid[x][y]=new JButton("x");-I am trying to set lines 1-4 to x
}
else if (y>7){
grid[x][y]=new JButton("y");-I am trying to set lines 7-10 to y
}
frame.add(grid[x][y]);
else{ "IT MARKS THIS AS WRONG"
grid[x][y]=new JButton(" ");
}
}
}
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);``
}
public static void main(String[] args) {
new ButtonGrid(10,10);
}
}
我认为我正在做的一切正确而不确定为什么eclipse会给我这些错误。 请帮忙! 最终我将在第7-10行输入,但这个测试不起作用。 如果有人知道如何帮助我的话,我正在玩Swing的棋盘游戏。
答案 0 :(得分:1)
frame.add(grid[x][y]);
行放在else if
之后,会导致编译时错误。
if (y < 4) {
grid[x][y]=new JButton("x");-I am trying to set lines 1-4 to x
}
else if (y>7){
grid[x][y]=new JButton("y");-I am trying to set lines 7-10 to y
}
frame.add(grid[x][y]);
else{ "IT MARKS THIS AS WRONG"
grid[x][y]=new JButton(" ");
}
请完成if-else教程。
答案 1 :(得分:1)
解决您的一个问题:在else
阻止后,您只能立即拥有if
阻止。您收到错误是因为您已在frame.add(grid[x][y]);
块和else if { ... }
块之间插入了else { ... }
语句。
答案 2 :(得分:0)
由于你有一个悬空的else
块,你发布的代码编译得不会产生更少的NullPointerException:
frame.add(grid[x][y]);
else{ // *** this else block is not associated with any if block***
grid[x][y]=new JButton(" ");
}
您只想发布导致错误的代码,或者解释发布代码中的实际错误。
答案 3 :(得分:0)
这一行代码出错了地方:
frame.add(grid[x][y]); // <<<<<<<<<<<<< This line should be here <<<<<<<<<<
这是您的整个列表。我评论了一些未使用的代码,但主要的是上面的代码行是在错误的地方。
如果您有更多问题,我很乐意为您指导。我的电子邮件地址是:kaydell@yahoo.com。
// Not used: import java.awt.Color;
import java.awt.GridLayout;
// Not Used: import java.util.Random;
// Not Used: import java.util.Scanner;
import javax.swing.JButton;
import javax.swing.JFrame;
// Not used: import javax.swing.JTextField;
public class ButtonGrid {
JFrame frame=new JFrame();
JButton[][] grid;
public ButtonGrid(int width, int length){
// Not Used: Random r=new Random();
// Not Used: int w=r.nextInt(13-1)+1;
frame.setLayout(new GridLayout(width,length));
grid=new JButton[width][length];
// Not Used: Scanner g = new Scanner(System.in);
for(int y=0;y<length;y++){
for(int x=0;x<width;x++){
if (y < 4) {
grid[x][y]=new JButton("x"); // -I am trying to set lines 1-4 to x
}
else if (y>7){
grid[x][y]=new JButton("y"); // -I am trying to set lines 7-10 to y
}
else { // "IT MARKS THIS AS WRONG"
grid[x][y]=new JButton(" ");
}
frame.add(grid[x][y]); // <<<<<<<<<<<<< This line should be here <<<<<<<<<<
}
}
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true); // ``
}
public static void main(String[] args) {
new ButtonGrid(10,10);
}
}