Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我会得到这个例外?_Java_Exception - Fatal编程技术网

Java 为什么我会得到这个例外?

Java 为什么我会得到这个例外?,java,exception,Java,Exception,我正在运行我的程序,并试图从该程序运行的程序启动“帮助”菜单(如果有意义的话!)。但是我得到了一个“NoTouchElement”异常,在我的try{}catch()程序中都没有调用它! 我正在做的是; 运行程序。键入“create”以启动commandCreate类。然后我输入“帮助”启动“帮助”菜单。但是我得到了NoTouchElement例外。如果有人能帮助我,我的两个程序如下。多谢各位 main.java commandCreate.java 名为API的超类中可能存在问题。看那里。名为

我正在运行我的程序,并试图从该程序运行的程序启动“帮助”菜单(如果有意义的话!)。但是我得到了一个“NoTouchElement”异常,在我的
try{}catch()
程序中都没有调用它! 我正在做的是; 运行程序。键入“create”以启动commandCreate类。然后我输入“帮助”启动“帮助”菜单。但是我得到了NoTouchElement例外。如果有人能帮助我,我的两个程序如下。多谢各位

main.java commandCreate.java
名为API的超类中可能存在问题。看那里。

名为API的超类中可能有问题。看那里。

根据堆栈跟踪,问题在这里:

            Scanner kbd = new Scanner(System.in);
                String userLine = kbd.nextLine();

            Scanner read = new Scanner(userLine);
                option = read.next();
                fileName = read.next();             // <--- exception here
Scanner kbd=新扫描仪(System.in);
字符串userLine=kbd.nextLine();
扫描仪读取=新扫描仪(用户线);
option=read.next();

fileName=read.next();// 根据堆栈跟踪,问题在于:

            Scanner kbd = new Scanner(System.in);
                String userLine = kbd.nextLine();

            Scanner read = new Scanner(userLine);
                option = read.next();
                fileName = read.next();             // <--- exception here
Scanner kbd=新扫描仪(System.in);
字符串userLine=kbd.nextLine();
扫描仪读取=新扫描仪(用户线);
option=read.next();


fileName=read.next();//请发布您的异常StasTrror。不知道如何堆栈跟踪,真的。无关,但我强烈考虑使用模板库,而不是嵌入所有这些字符串。至少要将每个写入块重构到它们自己的方法中,以便更容易地处理主线代码。为了跟踪这些问题,您需要将
println(“出现问题:+ex”)
更改为
ex.printStackTrace()
,以及
System.out.println(“出现错误:+e”)
e.printStackTrace()
,依此类推。否则,您将无法获得有关异常的足够信息来了解发生了什么。(就此而言,您可能不应该捕获这些异常;或者至少,您的
catch
-块应该重新抛出它们。如果您不知道它们是什么,而且您显然不知道,那么您如何知道吞下它们并继续呢?)请发布你的异常StActTracle。不确定如何跟踪StActTo,真的。无关,但我强烈考虑使用模板库,而不是嵌入所有的字符串。至少要将每个写的块重新分解成自己的方法,以便更容易地处理主线代码。ed将
println(“出现问题:“+ex”)
更改为
ex.printStackTrace()
,并将
System.out.println(“出现错误:“+e”)
更改为
e.printStackTrace()
,以此类推。否则,您将无法获得有关异常的足够信息以了解发生了什么。(就此而言,您可能不应该捕获这些异常;或者至少,您的
catch
-块应该重新抛出它们。如果您不知道它们是什么,而且您显然不知道,那么您如何知道吞下它们并继续呢?)是的,我想这可能与那个扫描器有关。有没有办法让它只在有两个字符串的输入时运行“读取”扫描器?这样我就可以同时拥有两个if?@NathanKreider:我想你可以检查
if(java.util.regex.Pattern.matches(“.\\s\\s+\\s.*,userLine))
。这将确保
userLine
至少包含两个由空格分隔的非空格字符。这非常有效。谢谢!现在缩短它并使用导入。是的,我想这可能与扫描仪有关。有没有办法让它只运行“读取”命令扫描是否有两个字符串的输入?这样我就可以同时拥有两个if?@NathanKreider:我想你可以检查
if(java.util.regex.Pattern.matches(“.\\s\\s+\\s.*”,userLine))
。这将确保
userLine
至少包含两个由空格分隔的非空格字符。这非常有效。谢谢!现在缩短它并使用导入。API类仅包含3个方法,与任何方法都不冲突。API类仅包含3个方法,与任何方法都不冲突。
            Scanner kbd = new Scanner(System.in);
                String userLine = kbd.nextLine();

            Scanner read = new Scanner(userLine);
                option = read.next();
                fileName = read.next();             // <--- exception here