Не сте регистриран! Регистрирайте се БЕЗПЛАТНО, за да използвате услугите на сайта!

Нова тема
Защо ми връща null System.console();
Тази тема е погледната 449 пъти
Добави темата към любими | Принтирай темата | Нова тема 
Публикувано на: 22.06.2008 08:39
silver_fox
Калфа

Мнения: (14)

        //Защо винаги cons е null???
        Console cons = System.console();
        char[] passwd;
        String username;
       
        if(cons != null){
            username = cons.readLine("User name: ");
            passwd = cons.readPassword("Password: ");
        }


 
---------------------------
Потребител от: 22.06.08 | Всички уроци от silver_fox | Всички скриптове от silver_fox
напиши eMail напиши лично съобщение виж профила на silver_fox
Публикувано на: 22.06.2008 12:09
Equilibrium
Калфа

Мнения: (19)

Кажи по точно какъв скрипт искаш да напишеш и на какъв език.


 
---------------------------
Потребител от: 31.10.07 | Всички уроци от Equilibrium | Всички скриптове от Equilibrium

Believe in yourselves and make your life eazy
напиши eMail напиши лично съобщение виж профила на Equilibrium
Публикувано на: 22.06.2008 13:05
silver_fox
Калфа

Мнения: (14)

Цитат от Equilibrium@22.06.2008 12:09:
Кажи по точно какъв скрипт искаш да напишеш и на какъв език.
Ами това е на java и става въпрос за четене на парола от конзолата.
За тази цел ми трябва обект Console.


 
---------------------------
Потребител от: 22.06.08 | Всички уроци от silver_fox | Всички скриптове от silver_fox
напиши eMail напиши лично съобщение виж профила на silver_fox
Публикувано на: 22.06.2008 16:42
Equilibrium
Калфа

Мнения: (19)

Ами незнам как са работите от твоя пакет cons. ето го и моя вариант без да се импортва нищо.Малко е сложен и имаш задачата да прочетеш малко :)


public class helpforum {
       public static void printPrompt(String prompt) {
          System.out.print(prompt + " ");
          System.out.flush();
       }
      
       public static String readLine() { //4ete ot konzolata i vra6ta string
          int ch;
          String r = "";
          boolean done = false;
          while (!done) {
             try {
                ch = System.in.read();
                if ((char) ch == '\n') done = true;
                else if (ch != '\r') r = r + (char) ch;
             }
             catch(java.io.IOException e) {
                done = true;
             }
          }
          return r;
       }

       public static String readLine(String prompt) {
          printPrompt(prompt);
          return readLine();
       }

       public static int readInt(String prompt) { //4ete ot konsolata s validaciq na dannite i vra6ta int
          while(true) {
             printPrompt(prompt);
             try {
                return Integer.parseInt(readLine().trim());
             }
             catch(NumberFormatException e)  {
                System.out.println("Not an integer. Please try again!");
             }
          }
       }
      public static void main(String args[])
      {
          String username=readLine("Vavedi username");
          int password=readInt("Vavedi parola");
          System.out.println("username "+username);
          System.out.println("parola "+password);
      }
       
      

}



 
Това мнение е редактирано от Equilibrium на 22.06.2008 16:44
---------------------------
Потребител от: 31.10.07 | Всички уроци от Equilibrium | Всички скриптове от Equilibrium

Believe in yourselves and make your life eazy
напиши eMail напиши лично съобщение виж профила на Equilibrium
Публикувано на: 22.06.2008 19:02
silver_fox
Калфа

Мнения: (14)

Цитат от Equilibrium@22.06.2008 16:42:
Ами незнам как са работите от твоя пакет cons. ето го и моя вариант без да се импортва нищо.Малко е сложен и имаш задачата да прочетеш малко :)


public class helpforum {
       public static void printPrompt(String prompt) {
          System.out.print(prompt + " ");
          System.out.flush();
       }
      
       public static String readLine() { //4ete ot konzolata i vra6ta string
          int ch;
          String r = "";
          boolean done = false;
          while (!done) {
             try {
                ch = System.in.read();
                if ((char) ch == '\n') done = true;
                else if (ch != '\r') r = r + (char) ch;
             }
             catch(java.io.IOException e) {
                done = true;
             }
          }
          return r;
       }

       public static String readLine(String prompt) {
          printPrompt(prompt);
          return readLine();
       }

       public static int readInt(String prompt) { //4ete ot konsolata s validaciq na dannite i vra6ta int
          while(true) {
             printPrompt(prompt);
             try {
                return Integer.parseInt(readLine().trim());
             }
             catch(NumberFormatException e)  {
                System.out.println("Not an integer. Please try again!");
             }
          }
       }
      public static void main(String args[])
      {
          String username=readLine("Vavedi username");
          int password=readInt("Vavedi parola");
          System.out.println("username "+username);
          System.out.println("parola "+password);
      }
       
      

}
Програмата работи само че за парола само цифри?
Гледам, че за четене си използвал System.in.read(); -ами точно тук е проблема това е видимо от всеки. Аз от начало пот-ходих по дук начин
като използвах новия обект в java5 java.util.Scanner
 
Scanner in = new Scanner(System.in);
String passwd= in.nextLine();

Обаче като прочетох малко:

The Scanner class is not suitable for reading a password from a console since the input is plainly visible to anyone. Java SE 6 introduces a Console class specifically for this purpose. To read a password, use the following code:

Console cons = System.console();//тук ми дава null !!!!
String username = cons.readLine("User name: ");
char[] passwd = cons.readPassword("Password: ");



 
Това мнение е редактирано от silver_fox на 22.06.2008 19:06
---------------------------
Потребител от: 22.06.08 | Всички уроци от silver_fox | Всички скриптове от silver_fox
напиши eMail напиши лично съобщение виж профила на silver_fox
Публикувано на: 22.06.2008 20:12
Equilibrium
Калфа

Мнения: (19)

ами промени паролата така че да е като името копирай нещата след равното и няма да имаш роблеми аз мислех че ти трябва и валидация затова е така :)
не сам много запознат с твоя пример първото тримесечие учих Java и вече е зело да ми се замаглява :)


 
Това мнение е редактирано от Equilibrium на 22.06.2008 20:13
---------------------------
Потребител от: 31.10.07 | Всички уроци от Equilibrium | Всички скриптове от Equilibrium

Believe in yourselves and make your life eazy
напиши eMail напиши лично съобщение виж профила на Equilibrium
Публикувано на: 22.06.2008 20:54
silver_fox
Калфа

Мнения: (14)

Благодаря все пак за старанието :)


 
---------------------------
Потребител от: 22.06.08 | Всички уроци от silver_fox | Всички скриптове от silver_fox
напиши eMail напиши лично съобщение виж профила на silver_fox
Публикувано на: 22.06.2008 22:52
dokster
Ронин

Модератор

Мнения: (66)

Какво ще ти върне System.console() зависи от начина на стартиране на виртуалната машина.


 
---------------------------
Потребител от: 04.04.08 | Всички уроци от dokster | Всички скриптове от dokster

Just try me!
напиши eMail напиши лично съобщение виж профила на dokster
Публикувано на: 23.06.2008 02:06
Equilibrium
Калфа

Мнения: (19)

тук може да пише повече потарси
http://java.sun.com/javase/6/docs/api/java/io/Console.html
и аз се зарибих нещо :)


 
---------------------------
Потребител от: 31.10.07 | Всички уроци от Equilibrium | Всички скриптове от Equilibrium

Believe in yourselves and make your life eazy
напиши eMail напиши лично съобщение виж профила на Equilibrium
 1 посетител чете тази тема (0 потребители и 1 гост)  
Активни потребители: ---
   





IT-PLACE.NET © 2004 - 2008