【发布时间】:2021-03-05 08:22:58
【问题描述】:
我遇到了一个奇怪的问题。所以我使用 BlueJ 作为我的代码编辑器,它可以很好地运行我的代码。当我创建一个 jar 文件并运行它时,程序会抛出 ““main”java.util.NoSuchElementException 中的异常:找不到行”。
我在这里有两个问题:
-
为什么我的代码在 BlueJ 中运行得很好,但在其他运行时环境或编辑器(如 Visual Studio Code)中却没有?
-
还有为什么它完全失败了?
为了让每个人都知道,我压缩了代码并删掉了一些部分。问题依然存在。
import java.util.*;
import java.util.Scanner;
import java.io.*;
/**
* Write a description of class mainBody here.
*
* @author (Brayden Anderson)
* @version (a version number or a date)
*/
public class mainBody{
public static ArrayList<String> Messages = new ArrayList<String>();
public static ArrayList<String> changeLog = new ArrayList<String>();
/**
* mainBody Constructor
* Setup Menu
*/
public mainBody(){
Scanner scan = new Scanner(System.in);
System.out.println("Welcome to Solar!");
System.out.println("========================================");
System.out.println("1. Start Setup");
System.out.println("2. Quit Program");
System.out.println("Console: ");
System.out.println("[System]: Please Start Setup to Proceed");
String selection = scan.nextLine();
scan.close();
if(selection.equals("1")){
System.out.println("Starting Setup");
}else if(selection.equals("2")){
System.exit(1);
}else{
new mainBody();
}
}
/**
* Method main
*
* @param args A parameter
*/
public static void main(String[] args) {
new mainBody();
}
}
在 powershell/CMD 中输出:
欢迎来到太阳能!
- 开始设置
- 退出程序
控制台:[系统]:请启动安装程序以继续 1
Bluej 中的输出:
欢迎来到太阳能!
- 开始设置
- 退出程序控制台:[系统]:请启动安装程序以继续 1
【问题讨论】:
-
我猜在 powershell 中你只是按 Enter 而不输入任何数字。您应该检查扫描仪是否存在有效输入:Scanner: No line found
-
根据您发布的内容,当您在 PowerShell 或 cmd 中运行代码时,文件
Setup.java中的第 309 行(间接)抛出异常。我假设您编写了一个名为Setup的类。不幸的是,我在您的问题中找不到该类的代码,因此无法进一步帮助您。 -
对于它的价值,当我运行您问题中的代码时,我确实没有得到任何错误。假设您还没有这样做,我建议您阅读How to create a Minimal, Reproducible Example
-
@Abra 因此,在 Setup 类中,它所做的只是在询问您是否要在 C 驱动器上安装目录之前打开扫描仪类的新实例......所以 mainBody 类有一个实例然后 Scanner 在调用安装程序类之前将其关闭。所以它之前所做的并不是在调用 Setup 类之前关闭扫描仪。所以我之前添加了一个近距离呼叫扫描仪,现在问题发生在那里
-
如果您需要帮助调试您的代码,那么我只能在您发布它时为您提供帮助(最好在您的问题中作为文本)。正如我在之前的评论中所写,尝试发布minimal reproducible example。 (请阅读该链接,因为我相信它会帮助您获得答案)。
标签: java exception nosuchelementexception