Почему моя Java-программа работает в консоли, а не в Eclipse?

1

Я хотел знать, почему моя Java-программа работает в консоли, когда я это делаю:

javac Main.java

java Main

... а не в 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);
    }
}

Как вы можете видеть, я добавил System.out.println(console == null); в начале моего общедоступного метода static void main, чтобы проверить, и он действительно возвращает true в консоли.

Поэтому мой вопрос: как инициализировать консоль в Eclipse, чтобы мой код мог работать? спасибо

Теги:
terminal
console

1 ответ

4
Лучший ответ

Это связано с тем, что System.console() вернет уникальный объект консоли, связанный с текущей виртуальной машиной Java, если таковой имеется, а eclipse не имеет уникальной консоли.

Вы должны попытаться использовать Scanner или System.in чтобы получить консольный ввод

  • 0
    Я не понимаю, как заменить его в моей программе. У меня ошибка, когда я это делаю.
  • 0
    Например, вы можете использовать Scanner scanner = new Scanner(System.in); String password = scanner.next();
Показать ещё 13 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню