当前位置: 首页 > 知识库问答 >
问题:

为什么我的Java程序在console中工作而不在Eclipse中工作?

匡凌
2023-03-14

我想知道为什么我的Java程序在控制台工作,当我做:

javac Main.java

Java美因河

...而不是在Eclipse中,因为我有这个错误:

线程“main”java.lang.NullPointerException在codepin.main.main(main.java:48)-->char passwordarray[]=console.readpassword(“enter pin:”);

这是我的代码:

package codePin;

import java.io.*;
import java.util.*;

public class main {


    static public boolean readPinsData(File dataFile, ArrayList<Integer> data) {
        boolean err = false;
        try {
            Scanner scanner = new Scanner(dataFile);
            String line;
            while (scanner.hasNext()) {
                line = scanner.nextLine();
                try {
                    data.add(Integer.parseInt(line));
                } catch (NumberFormatException e) {
                    e.printStackTrace();
                    err = true;
                }
            }
            scanner.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            err = true;
        }

        return err;
    }

    public static void main(String[] args) {


        System.out.println("-----------------------");
        System.out.println("APPLICATIONS BESOINS");
        System.out.println("-----------------------");
        Console console = System.console();

        System.out.println(console == null);

        int pinSize = 0;
        int nbTry = 0;
        boolean authenticated = false;


        do {
            do {

                char passwordArray[] = console.readPassword("Enter pin: "); //This is the line causing the error 
                pinSize = passwordArray.length;

                if (pinSize != 4) { 

                    System.out.println("Pin must be 4 digits");
                } else {
                    System.out.println("Checking...");
                }

                ArrayList<Integer> pins = new ArrayList<Integer>(); 
                readPinsData(new File("bdd.txt"), pins); 



                String[] thePins = new String[pins.size()];
                for (int i = 0; i < thePins.length; i++) {
                    thePins[i] = pins.get(i).toString();
                }

                String passEntered = String.valueOf(passwordArray);

                for (int i = 0; i < thePins.length; i++) {                      
                    if (passEntered.equals(thePins[i]) && pinSize == 4) {
                        System.out.println(":)");
                        authenticated = true;
                        break;
                    }
                }

            } while (pinSize != 4); 
            if (!authenticated && pinSize == 4) { 

                System.out.println(":(");
                nbTry++;
            }
        } while (nbTry < 3 && !authenticated);
    }
}

正如您所看到的,我在公共静态void main方法的乞求下添加system.out.println(console==null);来进行检查,它实际上在控制台中返回true。

所以我的问题是:如何在Eclipse中初始化控制台,使我的代码能够工作?谢谢你

共有1个答案

訾朗
2023-03-14

这是因为system.Console()将返回与当前Java虚拟机关联的唯一控制台对象(如果有的话),而eclipse没有唯一的控制台。

您应该尝试使用scannersystem.in获取控制台输入

 类似资料:
  • 请建议如何解决这个问题。我被困在这里了。 下面是错误信息; null

  • 我已经连接了我的Windows10和linux机器。我想远程关闭我的Windows10电脑从我的Linux。然而,当我使用下面的Java程序时,它并没有关掉我的窗户。我试过用 相反,在程序中输出命令,但我得到了相同的结果。 输出

  • 我正在尝试制作两个程序。我希望一个打印我居住的城市的当前天气,我希望另一个从一个在线帐户获取数据并返回它。对于这些脚本,我导入了天气模块和请求模块。当我在shell中导入它们时,没有问题,但是当我运行脚本时,它说“ImportError:No module name you weather”。我做错了什么? 壳牌: 脚本: 这也适用于“天气”模块 谢谢你

  • 我正在尝试执行GET命令,以便我可以从服务器获取数据。下面的Curl适用于Postman。 在运行我的代码时,我能够获取会话ID。下一步是获取数据。但是当我执行GET时,我没有得到任何响应。相反,我得到一个错误,如下所示:“指定的值具有无效的HTTP标头字符。(参数'name')” 下面是我试图执行的C代码 问题:我没有收到来自服务器的响应,响应长度为零。 以下是答案:0 回答ErrorMessa

  • 问题内容: 这旨在对每周出现一次或两次的所有类似问题(但过于具体的问题,不能成为接近的目标候选人)提供规范的问答。 我正在开发一个应用程序,该应用程序需要解析带有表的网站。由于派生用于抓取网页的XPath表达式很无聊且容易出错,因此我想为此使用 Firebug 的XPath提取器功能 (或其他浏览器中的类似工具)。 输入示例如下所示: 我想提取第一个数据单元格(“ foobar”)。Firebug

  • 这是为了提供一个规范的Q 我正在开发一个应用程序,需要解析一个网站中的表。由于导出用于抓取网页的XPath表达式是一项枯燥且容易出错的工作,我想为此使用Firebug的XPath提取器功能(或其他浏览器中的类似工具)。 示例输入如下所示: 我想提取第一个数据单元(“foobar”)。Firebug提出了XPath表达式 这在任何XPath测试插件中都可以正常工作,但在我自己的应用程序中却不行(没有