Soy un aprendiz (muy básico por ahora). Hago una pregunta cuando no encuentro una respuesta legítima.

¿Puedo declarar el escáner en clase pública para no tener que declarar en cada función que uso?

public class  name
{
   //can i declare scanner here? and how?
   public static int xxx2(int kk)
   {
     Scanner kb=new Scanner( System.in);
     //code
     return kk;
    }

    public static int xxx1(int kk)
    {
        Scanner kb=new Scanner(System.in);
        //code
    }
}
2
Valentin 16 oct. 2018 a las 09:57

2 respuestas

La mejor respuesta

Sí, puede mantener el Scanner como registro. Como está usando System.in, puede inicializarlo en línea y no tiene que preocuparse por cerrarlo:

public class MyClass {
    private static Scanner myScanner = new Scanner(System.in);

    // Methods that can use myScanner
}
5
Mureinik 16 oct. 2018 a las 07:01

¡Si! También puede inicializar variables / objetos en el nivel de clase. Pero el código ejecutable debe estar en métodos solo como cualquier expresión

public class MyClass{
  //this is allowed in class
  private Scanner scanner = new Scanner(System.in);


  public void myScannerGet(){
     String s = scanner.readLine();

     //this must be inside method
     System.out.println(s);
  }

}
1
Nagesh Mhapadi 16 oct. 2018 a las 07:17