gpt4 book ai didi

java - 为什么我的 Java 程序在控制台而不是 Eclipse 中运行?

转载 作者:行者123 更新时间:2023-11-29 03:22:54 25 4
gpt4 key购买 nike

我想知道为什么当我这样做时我的 Java 程序在控制台中运行:

javac Main.java

java Main

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

Exception in thread "main" java.lang.NullPointerException at 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);
}
}

如您所见,我在 public static void main 方法的开头添加了 System.out.println(console == null); 只是为了检查,它实际上在控制台。

所以我的问题是:如何在 Eclipse 中初始化控制台以便我的代码可以工作?谢谢

最佳答案

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

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

关于java - 为什么我的 Java 程序在控制台而不是 Eclipse 中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22605636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com