我一直在使用java中的基于文本的RPG,只是为了好玩。经过几个小时的繁琐工作,写了几十个课程,用于武器,法术,cmbat系统,购物系统等。我写了一个简单的课程来开始和运行游戏。所有它真正做的是显示一个主菜单,并创建一个对象,反过来创建游戏中的每个类,并开始一个新的游戏。 RunGame类的代码如下:
import java.util.Scanner;
import java.util.Random;
public class RunGame {
public static void main(String []args) {
Scanner reader = new Scanner(System.in);
int choice = 0;
QueratiaMain main = new QueratiaMain(); //code stops responding after creation of this object. why?
// reader.nextLine();
System.out.println("Welcome to Queratia, a text-based RPG! Choose an option:\n1. Start New Game\n2. Exit");
choice = reader.nextInt();
if(choice == 1) {
}else
System.exit(99);
}
}
一切都编译得很好,但是当我运行程序时,代码似乎停止在我创建QueratiaMain对象的任何行上继续进行。有关它为什么会这样做的任何想法?谢谢!
更新:在调试代码之后,我得到了几行,调试器告诉我没有找到源代码,并且某些行正在抛出一个未找到文件的异常。但是,我正在Eclipse中的正常工作区工作,那么这怎么可能呢?我试图手动指定在哪里找到文件,但没有改变。关于为什么会发生这种情况的任何想法?
答案 0 :(得分:6)
打开Java调试器。在main()上放置一个断点。单步执行所有代码,特别是步入QuertiaMain()构造函数。当你单步执行时,最终你会遇到一条挂起或无限循环的线路或一些阻止前进的条件。代码循环可能很明显,或者你可以在这里发布循环代码以获得更具体的帮助......
答案 1 :(得分:2)
您使用的是什么IDE?
如果它的Eclipse然后右键单击此文件的任何位置,然后“Debug As - > Java Application”,您还需要在QueratiaMain
构造函数中放置断点。
答案 2 :(得分:1)
你可以通过linux上的kill -3和windows上的ctrl-break找到你的java程序冻结的位置。
答案 3 :(得分:0)
如果您使用Java 6,则在JDK中调用jvisualvm以附加到正在运行的程序以查看它正在执行的操作。