Exception in thread "main" java.lang.NullPointerException

package vv;
import java.io.*;
public class tools {
       
        BufferedReader teclado;
        /*este es el metodo para imprimir*/
        void print(String msg)
        {
                System.out.print(msg);
        }
         /*metodo para leer enteros*/
        double leeDouble(String msg) throws IOException
        {
                print(msg);
                double res=0;
                res=java.lang.Double.parseDouble(teclado.readLine());
                return res;
        }
         /*metodo para instalacion del buffer*/
       
        void inicio()
        {
                teclado=new BufferedReader(new InputStreamReader(System.in));
        }
}

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Sr. Negativo

Te falta el main y lógica de tu programa

Un ejemplo. Introducir tu nombre y que lo muestre en pantalla.

package mipaquete;
import java.io.*;

//las clases siempre en mayúsculas
public class Algo{

public static void main(String[] args){

BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
String nombre="";

System.out.println("Introduce tu nombre");
nombre=in.readLine();
System.out.println("Hola "+nombre);

}

}

@karl8911 Y? Que es lo que

@karl8911 Y? Que es lo que significa tu post? Es pregunta? Nos estás presumiendo? Estás explicando algo? Que!!?

@Sr(-) A pesar de que tu respuesta en correcta, no es lo que ( presumiblemente ) está preguntando/mostrando/presumiendo karl8911

Él ya tiene un método main en algún otro lado, pero le faltó llamar al método inicio() de la clase tools ( mal nombrada karl8911 por cierto, todas las clases en Java deben de empezar con mayúscula )

Acá esta la prueba:

$cat Test.java  
package vv;

class Test {
    public static void main( String ... args )  throws java.io.IOException {
        tools t = new tools();
        t.leeDouble( "" ); // <-- NPE
    }
}
$javac -d . tools.java Test.java
$java vv.Test
Exception in thread "main" java.lang.NullPointerException
        at vv.tools.leeDouble(tools.java:16)
        at vv.Test.main(Test.java:6)

Para arreglarlo basta agregar el llamado a t.inicio() para que el "teclado" deje de ser null.

$ed Test.java
190
6
        t.leeDouble( "" ); // <-- NPE
i
        t.inicio();
.
wq
210
$cat -n Test.java
     1  package vv;
     2 
     3  class Test {
     4      public static void main( String ... args )  throws java.io.IOException {
     5          tools t = new tools();
     6          t.inicio();
     7          t.leeDouble( "" ); // <-- NPE  
     8      }
     9  }
$javac -d . Test.java
$java vv.Test
1
$

Ya con eso el NullPointerException no vuelve a salir.

Imagen de Sr. Negativo

Pensé que se trataba de una pregunta

Es lo que pasa cuando solo copian un programa y esperan a que "mágicamente" funcione.

@OscarRyz
Buena solución, no había pensado en eso.

@Mr(-) Lo que sí es cierto es

@Mr(-) Lo que sí es cierto es que el post ni siquiera fue pregunta ni nada... muy mal, y habría pasado inadvertida hasta que tu la mencionaste ...

Imagen de Sr. Negativo

Si, es verdad

Es que como que senti unpoco de "pena" por que nadie le contestaba.

Aprovechando ya escribi un post sobre TDD (lo prometi desde la semana pasada en Twit) ... pero fue marcada como spam ... upss bueno lástima no guarde una copia.

:(