简体   繁体   English

Java程序无法运行,我不知道出了什么问题

[英]Java program won't run, I've no clue what's wrong

I've been trying to figure out why this Java program I am trying to run won't do it. 我一直在试图弄清为什么我试图运行的Java程序无法做到这一点。 It's not finished yet, but I'm just trying to make sure I got all the GUI aspects the way I want them to be. 还没有完成,但是我只是想确保我按照自己的意愿获得了所有GUI方面的信息。 Netbeans wont even tell me whats going on no matter what I do, but it will run other programs just fine. 无论我做什么,Netbeans都不会告诉我发生了什么,但是它将运行其他程序就很好了。

package TheGameCorner;

import java.awt.*;
import java.awt.event.*;
import java.util.Random;
import javax.swing.*;

public class HeartAndSoul extends JFrame implements ActionListener 
{
 Random rand = new Random();

 int bombs = 13; 
 int newBombCheck = 0;
 int bombX, bombY;
 String bombCarrier;
 String bOne, bTwo, bThree, bFour, bFive, bSix, bSeven, bEight, bNine, bTen, bEleven, bTwelve, bThirteen;
 int gameOver = 0;
 int scoreVal = 0, colOneVal = 0, colTwoVal = 0, colThreeVal = 0, colFourVal = 0, colFiveVal = 0, rowOneVal = 0, rowTwoVal = 0, rowThreeVal = 0, rowFourVal = 0, rowFiveVal = 0;
 String oneOneVal = "oneOne", oneTwoVal = "oneTwo", oneThreeVal = "oneThree", oneFourVal = "oneFour", oneFiveVal = "oneFive";
 String twoOneVal = "twoOne", twoTwoVal = "twoTwo", twoThreeVal = "twoThree", twoFourVal = "twoFour", twoFiveVal = "twoFive";
 String threeOneVal = "threeOne", threeTwoVal = "threeTwo", threeThreeVal = "threeThree", threeFourVal = "threeFour", threeFiveVal = "threeFive";
 String fourOneVal = "fourOne", fourTwoVal = "fourTwo", fourThreeVal = "fourThree", fourFourVal = "fourFour", fourFiveVal = "fourFive";
 String fiveOneVal = "fiveOne", fiveTwoVal = "fiveTwo", fiveThreeVal = "fiveThree", fiveFourVal = "fiveFour", fiveFiveVal = "fiveFive";

 public HeartAndSoul(String title) 
 {
  super(title);

  bOne = BombGen(bOne, bTwo, bThree, bFour, bFive, bSix, bSeven, bEight, bNine, bTen, bEleven, bTwelve, bThirteen); //<editor-fold>
  bTwo = BombGen(bOne, bTwo, bThree, bFour, bFive, bSix, bSeven, bEight, bNine, bTen, bEleven, bTwelve, bThirteen);
  bThree = BombGen(bOne, bTwo, bThree, bFour, bFive, bSix, bSeven, bEight, bNine, bTen, bEleven, bTwelve, bThirteen);
  bFour = BombGen(bOne, bTwo, bThree, bFour, bFive, bSix, bSeven, bEight, bNine, bTen, bEleven, bTwelve, bThirteen);
  bFive = BombGen(bOne, bTwo, bThree, bFour, bFive, bSix, bSeven, bEight, bNine, bTen, bEleven, bTwelve, bThirteen);
  bSix = BombGen(bOne, bTwo, bThree, bFour, bFive, bSix, bSeven, bEight, bNine, bTen, bEleven, bTwelve, bThirteen);
  bSeven = BombGen(bOne, bTwo, bThree, bFour, bFive, bSix, bSeven, bEight, bNine, bTen, bEleven, bTwelve, bThirteen);
  bEight = BombGen(bOne, bTwo, bThree, bFour, bFive, bSix, bSeven, bEight, bNine, bTen, bEleven, bTwelve, bThirteen);
  bNine = BombGen(bOne, bTwo, bThree, bFour, bFive, bSix, bSeven, bEight, bNine, bTen, bEleven, bTwelve, bThirteen);
  bTen = BombGen(bOne, bTwo, bThree, bFour, bFive, bSix, bSeven, bEight, bNine, bTen, bEleven, bTwelve, bThirteen);
  bEleven = BombGen(bOne, bTwo, bThree, bFour, bFive, bSix, bSeven, bEight, bNine, bTen, bEleven, bTwelve, bThirteen);
  bTwelve = BombGen(bOne, bTwo, bThree, bFour, bFive, bSix, bSeven, bEight, bNine, bTen, bEleven, bTwelve, bThirteen);
  bThirteen = BombGen(bOne, bTwo, bThree, bFour, bFive, bSix, bSeven, bEight, bNine, bTen, bEleven, bTwelve, bThirteen); //</editor-fold>

  oneOneVal = SetBomb(oneOneVal); //<editor-fold>
  oneTwoVal = SetBomb(oneTwoVal);
  oneThreeVal = SetBomb(oneThreeVal);
  oneFourVal = SetBomb(oneFourVal);
  oneFiveVal = SetBomb(oneFiveVal);

  twoOneVal = SetBomb(twoOneVal);
  twoTwoVal = SetBomb(twoTwoVal);
  twoThreeVal = SetBomb(twoThreeVal);
  twoFourVal = SetBomb(twoFourVal);
  twoFiveVal = SetBomb(twoFiveVal);

  threeOneVal = SetBomb(threeOneVal);
  threeTwoVal = SetBomb(threeTwoVal);
  threeThreeVal = SetBomb(threeThreeVal);
  threeFourVal = SetBomb(threeFourVal);
  threeFiveVal = SetBomb(threeFiveVal);

  fourOneVal = SetBomb(fourOneVal);
  fourTwoVal = SetBomb(fourTwoVal);
  fourThreeVal = SetBomb(fourThreeVal);
  fourFourVal = SetBomb(fourFourVal);
  fourFiveVal = SetBomb(fourFiveVal);

  fiveOneVal = SetBomb(fiveOneVal);
  fiveTwoVal = SetBomb(fiveTwoVal);
  fiveThreeVal = SetBomb(fiveThreeVal);
  fiveFourVal = SetBomb(fiveFourVal);
  fiveFiveVal = SetBomb(fiveFiveVal); //</editor-fold>

  if (oneOneVal.equals("b")) //<editor-fold>
  {
   rowOneVal=rowOneVal+1;
   colOneVal=colOneVal+1;
  }
  if (oneTwoVal.equals("b"))
  {
   rowOneVal=rowOneVal+1;
   colTwoVal=colOneVal+1;
  }
  if (oneThreeVal.equals("b"))
  {
   rowOneVal=rowOneVal+1;
   colThreeVal=colOneVal+1;
  }
  if (oneFourVal.equals("b"))
  {
   rowOneVal=rowOneVal+1;
   colFourVal=colOneVal+1;
  }
  if (oneFiveVal.equals("b"))
  {
   rowOneVal=rowOneVal+1;
   colFiveVal=colOneVal+1;
  }

  if (twoOneVal.equals("b"))
  {
   rowTwoVal=rowOneVal+1;
   colOneVal=colOneVal+1;
  }
  if (twoTwoVal.equals("b"))
  {
   rowTwoVal=rowOneVal+1;
   colTwoVal=colOneVal+1;
  }
  if (twoThreeVal.equals("b"))
  {
   rowTwoVal=rowOneVal+1;
   colThreeVal=colOneVal+1;
  }
  if (twoFourVal.equals("b"))
  {
   rowTwoVal=rowOneVal+1;
   colFourVal=colOneVal+1;
  }
  if (twoFiveVal.equals("b"))
  {
   rowTwoVal=rowOneVal+1;
   colFiveVal=colOneVal+1;
  }

  if (threeOneVal.equals("b"))
  {
   rowThreeVal=rowOneVal+1;
   colOneVal=colOneVal+1;
  }
  if (threeTwoVal.equals("b"))
  {
   rowThreeVal=rowOneVal+1;
   colTwoVal=colOneVal+1;
  }
  if (threeThreeVal.equals("b"))
  {
   rowThreeVal=rowOneVal+1;
   colThreeVal=colOneVal+1;
  }
  if (threeFourVal.equals("b"))
  {
   rowThreeVal=rowOneVal+1;
   colFourVal=colOneVal+1;
  }
  if (threeFiveVal.equals("b"))
  {
   rowThreeVal=rowOneVal+1;
   colFiveVal=colOneVal+1;
  }

  if (fourOneVal.equals("b"))
  {
   rowFourVal=rowOneVal+1;
   colOneVal=colOneVal+1;
  }
  if (fourTwoVal.equals("b"))
  {
   rowFourVal=rowOneVal+1;
   colTwoVal=colOneVal+1;
  }
  if (fourThreeVal.equals("b"))
  {
   rowFourVal=rowOneVal+1;
   colThreeVal=colOneVal+1;
  }
  if (fourFourVal.equals("b"))
  {
   rowFourVal=rowOneVal+1;
   colFourVal=colOneVal+1;
  }
  if (fourFiveVal.equals("b"))
  {
   rowFourVal=rowOneVal+1;
   colFiveVal=colOneVal+1;
  }

  if (fiveOneVal.equals("b"))
  {
   rowFiveVal=rowOneVal+1;
   colOneVal=colOneVal+1;
  }
  if (fiveTwoVal.equals("b"))
  {
   rowFiveVal=rowOneVal+1;
   colTwoVal=colOneVal+1;
  }
  if (fiveThreeVal.equals("b"))
  {
   rowFiveVal=rowOneVal+1;
   colThreeVal=colOneVal+1;
  }
  if (fiveFourVal.equals("b"))
  {
   rowFiveVal=rowOneVal+1;
   colFourVal=colOneVal+1;
  }
  if (fiveFiveVal.equals("b"))
  {
   rowFiveVal=rowOneVal+1;
   colFiveVal=colOneVal+1;
  } //</editor-fold>

  JPanel refRow = new JPanel(), oneRow = new JPanel(), twoRow = new JPanel(), threeRow = new JPanel(), fourRow = new JPanel(), fiveRow = new JPanel(), infoRow = new JPanel(); //<editor-fold>

  JTextField colOne = new JTextField(1), colTwo = new JTextField(1), colThree = new JTextField(1), colFour = new JTextField(1), colFive = new JTextField(1), rowOne = new JTextField(1), rowTwo = new JTextField(1), rowThree = new JTextField(1), rowFour = new JTextField(1), rowFive = new JTextField(1), score = new JTextField(9);

  colOne.setEditable(false); colTwo.setEditable(false); colThree.setEditable(false); colFour.setEditable(false); colFive.setEditable(false); rowOne.setEditable(false); rowTwo.setEditable(false); rowThree.setEditable(false); rowFour.setEditable(false); rowFive.setEditable(false); score.setEditable(false);

  JButton oneOne = new JButton(""), oneTwo = new JButton(""), oneThree = new JButton(""), oneFour = new JButton(""), oneFive = new JButton(""), twoOne = new JButton(""), twoTwo = new JButton(""), twoThree = new JButton(""), twoFour = new JButton(""), twoFive = new JButton(""), threeOne = new JButton(""), threeTwo = new JButton(""), threeThree = new JButton(""), threeFour = new JButton(""), threeFive = new JButton(""), fourOne = new JButton(""), fourTwo = new JButton(""), fourThree = new JButton(""), fourFour = new JButton(""), fourFive = new JButton(""), fiveOne = new JButton(""), fiveTwo = new JButton(""), fiveThree = new JButton(""), fiveFour = new JButton(""), fiveFive = new JButton("");

  oneOne.setSize(20,20); oneTwo.setSize(20,20); oneThree.setSize(20,20); oneFour.setSize(20,20); oneFive.setSize(20,20); twoOne.setSize(20,20); twoTwo.setSize(20,20); twoThree.setSize(20,20); twoFour.setSize(20,20); twoFive.setSize(20,20); threeOne.setSize(20,20); threeTwo.setSize(20,20); threeThree.setSize(20,20); threeFour.setSize(20,20); threeFive.setSize(20,20); fourOne.setSize(20,20); fourTwo.setSize(20,20); fourThree.setSize(20,20); fourFour.setSize(20,20); fourFive.setSize(20,20); fiveOne.setSize(20,20); fiveTwo.setSize(20,20); fiveThree.setSize(20,20); fiveFour.setSize(20,20); fiveFive.setSize(20,20);

  oneOne.setActionCommand(oneOneVal); oneTwo.setActionCommand(oneTwoVal); oneThree.setActionCommand(oneThreeVal); oneFour.setActionCommand(oneFourVal); oneFive.setActionCommand(oneFiveVal); twoOne.setActionCommand(twoOneVal); twoTwo.setActionCommand(twoTwoVal); twoThree.setActionCommand(twoThreeVal); twoFour.setActionCommand(twoFourVal); twoFive.setActionCommand(twoFiveVal); threeOne.setActionCommand(threeOneVal); threeTwo.setActionCommand(threeTwoVal); threeThree.setActionCommand(threeThreeVal); threeFour.setActionCommand(threeFourVal); threeFive.setActionCommand(threeFiveVal); fourOne.setActionCommand(fourOneVal); fourTwo.setActionCommand(fourTwoVal); fourThree.setActionCommand(fourThreeVal); fourFour.setActionCommand(fourFourVal); fourFive.setActionCommand(fourFiveVal); fiveOne.setActionCommand(fiveOneVal); fiveTwo.setActionCommand(fiveTwoVal); fiveThree.setActionCommand(fiveThreeVal); fiveFour.setActionCommand(fiveFourVal); fiveFive.setActionCommand(fiveFiveVal);

  oneOne.addActionListener(this); oneTwo.addActionListener(this); oneThree.addActionListener(this); oneFour.addActionListener(this); oneFive.addActionListener(this); twoOne.addActionListener(this); twoTwo.addActionListener(this); twoThree.addActionListener(this); twoFour.addActionListener(this); twoFive.addActionListener(this); threeOne.addActionListener(this); threeTwo.addActionListener(this); threeThree.addActionListener(this); threeFour.addActionListener(this); threeFive.addActionListener(this); fourOne.addActionListener(this); fourTwo.addActionListener(this); fourThree.addActionListener(this); fourFour.addActionListener(this); fourFive.addActionListener(this); fiveOne.addActionListener(this); fiveTwo.addActionListener(this); fiveThree.addActionListener(this); fiveFour.addActionListener(this); fiveFive.addActionListener(this);

  JLabel scoreText = new JLabel("Score:");

  refRow.setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
  oneRow.setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
  twoRow.setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
  threeRow.setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
  fourRow.setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
  fiveRow.setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
  infoRow.setLayout(new BoxLayout(this, BoxLayout.X_AXIS));

  refRow.setSize(150,40);
  oneRow.setSize(150,40);
  twoRow.setSize(150,40);
  threeRow.setSize(150,40);
  fourRow.setSize(150,40);
  fiveRow.setSize(150,40);
  infoRow.setSize(150,40);

  refRow.add(colOne);
  refRow.add(colTwo);
  refRow.add(colThree);
  refRow.add(colFour);
  refRow.add(colFive);

  oneRow.add(oneOne);
  oneRow.add(oneTwo);
  oneRow.add(oneThree);
  oneRow.add(oneFour);
  oneRow.add(oneFive);
  oneRow.add(rowOne);

  twoRow.add(twoOne);
  twoRow.add(twoTwo);
  twoRow.add(twoThree);
  twoRow.add(twoFour);
  twoRow.add(twoFive);
  twoRow.add(rowTwo);

  threeRow.add(threeOne);
  threeRow.add(threeTwo);
  threeRow.add(threeThree);
  threeRow.add(threeFour);
  threeRow.add(threeFive);
  threeRow.add(rowThree);

  fourRow.add(fourOne);
  fourRow.add(fourTwo);
  fourRow.add(fourThree);
  fourRow.add(fourFour);
  fourRow.add(fourFive);
  fourRow.add(rowFour);

  fiveRow.add(fiveOne);
  fiveRow.add(fiveTwo);
  fiveRow.add(fiveThree);
  fiveRow.add(fiveFour);
  fiveRow.add(fiveFive);
  fiveRow.add(rowFive);

  infoRow.add(scoreText);
  infoRow.add(score); //</editor-fold>

  setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
  add(refRow);
  add(oneRow);
  add(twoRow);
  add(threeRow);
  add(fourRow);
  add(fiveRow);
  add(infoRow);

  colOne.setText(colOneVal+"");
  colTwo.setText(colTwoVal+"");
  colThree.setText(colThreeVal+"");
  colFour.setText(colFourVal+"");
  colFive.setText(colFiveVal+"");
  rowOne.setText(rowOneVal+"");
  rowTwo.setText(rowTwoVal+"");
  rowThree.setText(rowThreeVal+"");
  rowFour.setText(rowFourVal+"");
  rowFive.setText(rowFiveVal+"");
  score.setText(scoreVal+"");

  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 }

 public void actionPerformed(ActionEvent evt)  
 {
  //more code will go here, not done yet
  repaint(); 
 }

 private String BombGen(String bone, String btwo, String bthree, String bfour, String bfive, String bsix, String bseven, String beight, String bnine, String bten, String beleven, String btwelve, String bthirteen)
 {
  newBombCheck = 0;

  while (newBombCheck == 0)
  {
   bombX = rand.nextInt(5)+1;
   bombY = rand.nextInt(5)+1;

   if (bombX == 1)
    bombCarrier="one";
   if (bombX == 2)
    bombCarrier="two";
   if (bombX == 3)
    bombCarrier="three";
   if (bombX == 4)
    bombCarrier="four";
   if (bombX == 5)
    bombCarrier="five";

   if (bombY == 1)
    bombCarrier.concat("One");
   if (bombY == 2)
    bombCarrier.concat("Two");
   if (bombY == 3)
    bombCarrier.concat("Three");
   if (bombY == 4)
    bombCarrier.concat("Four");
   if (bombY == 5)
    bombCarrier.concat("Five");

   if (!bombCarrier.equals(bone) && !bombCarrier.equals(btwo) && !bombCarrier.equals(bthree) && !bombCarrier.equals(bfour) && !bombCarrier.equals(bfive) && !bombCarrier.equals(bsix) && !bombCarrier.equals(bseven) && !bombCarrier.equals(beight) && !bombCarrier.equals(bnine) && !bombCarrier.equals(bten) && !bombCarrier.equals(beleven) && !bombCarrier.equals(btwelve) && !bombCarrier.equals(bthirteen))
    newBombCheck = 1;
  } 
  return bombCarrier;
 }

 private String SetBomb(String suspect)
 {
  if (suspect.equals(bOne) || suspect.equals(bTwo) || suspect.equals(bThree) || suspect.equals(bFour) || suspect.equals(bFive) || suspect.equals(bSix) || suspect.equals(bSeven) || suspect.equals(bEight) || suspect.equals(bNine) || suspect.equals(bTen) || suspect.equals(bEleven) || suspect.equals(bTwelve) || suspect.equals(bThirteen))
   suspect = "b";
  return suspect;
 }

 public static void main(String[] args)
 {
  HeartAndSoul echo = new HeartAndSoul("The Game Corner") ;
  echo.setSize(200,300);     
  echo.setVisible(true);      
 }
}

Sorry it's so long, but I wanted to put the entire thing up because I have absolutely no idea what I'm doing wrong. 抱歉,时间太长了,但是我想把整个事情讲完,因为我完全不知道自己在做什么错。 I've tried being more specific with adding the action listener, I've tried adding Override annotation, but Netbeans refuses to get further than starting the execution of the program. 我尝试通过添加动作侦听器来更加具体,尝试添加Override注释,但是Netbeans拒绝采取进一步措施,而不是开始执行程序。

The problem is here: 问题在这里:

if (!bombCarrier.equals(bone) && !bombCarrier.equals(btwo) && !bombCarrier.equals(bthree) && !bombCarrier.equals(bfour) && !bombCarrier.equals(bfive) && !bombCarrier.equals(bsix) && !bombCarrier.equals(bseven) && !bombCarrier.equals(beight) && !bombCarrier.equals(bnine) && !bombCarrier.equals(bten) && !bombCarrier.equals(beleven) && !bombCarrier.equals(btwelve) && !bombCarrier.equals(bthirteen))
newBombCheck = 1;

This if is never entered, thus newBombCheck is never set to 1, thus the loop runs forever. 如果从不输入,则newBombCheck永远不会设置为1,因此循环将永远运行。

You should think a bit stuff over. 您应该考虑一下。 Also doing SO MUCH in a constructor is just wrong, to me. 对我来说,在构造函数中做这么多也是错误的。 This code is going to be a nightmare to maintain, you might want to rename things a bit, and add comments to make is clear what you want to achieve and why may be 这段代码将成为维护的噩梦,您可能需要重命名一些内容,并添加注释以明确您想要实现的目标以及原因。

Cheers, Eugene. 干杯,尤金。

It is in an infinite loop in the BombGen method. 它在BombGen方法中处于无限循环中。 newBombCheck is always 0. What you should do is run in the debugger, and then pause the app. newBombCheck始终为0。您应该在调试器中运行,然后暂停该应用程序。 It will always stop in your loop, which should tell you something is wrong. 它总是在您的循环中停止,这应该告诉您有什么问题。

You have an infinite loop here: 您在这里有一个无限循环:

  while (newBombCheck == 0)

Inside this loop put System.out.println(bombCarrier); 在此循环中放入System.out.println(bombCarrier); and check whether the values are as you would expect them to be. 并检查这些值是否与您期望的一样。 Whatever the values are, your code never hits the if statement in this loop and thus newBombCheck is never set to 1. 无论值是newBombCheck ,您的代码都不会在此循环中命中if语句,因此newBombCheck永远不会设置为1。

 bombX = rand.nextInt(5)+1;
   bombY = rand.nextInt(5)+1;

   if (bombX == 1)
    bombCarrier="one";
   if (bombX == 2)
    bombCarrier="two";
   if (bombX == 3)
    bombCarrier="three";
   if (bombX == 4)
    bombCarrier="four";
   if (bombX == 5)
    bombCarrier="five";

   if (bombY == 1)
    bombCarrier.concat("One");
   if (bombY == 2)
    bombCarrier.concat("Two");
   if (bombY == 3)
    bombCarrier.concat("Three");
   if (bombY == 4)
    bombCarrier.concat("Four");
   if (bombY == 5)
    bombCarrier.concat("Five");

I think You tried to scale it from 5*5 to 13*13, but forgot to add bombX=6...13 and for bombY too. 我认为您尝试将其从5 * 5缩放到13 * 13,但是却忘记添加bombX = 6 ... 13以及bombY。 that's why it stuck after bombGen6. 这就是为什么在bombGen6之后卡住的原因。
and then your condition is never true and keep generating ran numbers b/w 1-5. 然后您的条件就永远不会成立,并继续生成奔跑编号1-5。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM