【发布时间】:2015-04-12 01:35:29
【问题描述】:
谁能帮我确定我的代码做错了什么。我收到堆栈溢出错误。在我的代码结束时,我使用递归并且我没有停止程序的基本情况。它会一直循环并显示我的文本文件,直到我收到 stackoverflow 错误。
public class Reader
{
public static String readFinalQuestionBank() throws Exception
{
File textFile = new File("C:\\Users\\Joseph\\Documents\\School Files - NHCC\\CSci 2002\\FinalQuestionBank_JosephKraemer.txt"); //file location
try
{
Scanner scan = new Scanner(textFile); //Scanner to import file
while(scan.hasNextLine()) //Iterator - while file has next line
{
String qBank = scan.nextLine(); //Iterator next line
String[] tempArray = qBank.split("::"); //split data via double colon
System.out.println(qBank); //print data line
}
scan.close(); //close scanner
}
catch(FileNotFoundException e)
{
e.printStackTrace();
}
return readFinalQuestionBank(); //use of Recursion
}//end method readFinalQuestionBank
}//end class Reader
【问题讨论】:
-
除了一遍又一遍地读取文件直到堆栈溢出之外,您希望递归完成什么?
-
您似乎已经发现了问题所在。你还想知道什么?
-
请指定您要使用代码完成的任务。就目前而言,代码与在 while(true) 块中调用非递归 readFinalQuestionBank() 相同,不同之处在于您永无止境的递归调用最终会耗尽正在运行的线程的所有堆栈缓冲区并导致异常.
标签: java recursion split java.util.scanner