Tratando de impresión muestra datos nulos

NewJava:

Quiero un poco de ayuda en relación con el código que he escrito sólo como una muestra. Y actualmente estoy usando Atom Bloc de notas para mis códigos.

Planteamiento del problema:

Tome la entrada del usuario para el plano Detalles.

Rendimiento esperado:

Imprimir los datos introducidos por el usuario.

Problema:

Soy capaz de afrontar con éxito la entrada del usuario, pero durante la impresión, todos los valores se muestran como NULL.

CÓDIGO:

import java.util.*;
class Planes{
  String Name;
  int Number_of_Pylons;
  String Type;

  void EnterValues()
    {
      Scanner s=new Scanner(System.in);
      System.out.println("NAME: ");
      String Name=s.nextLine();
      System.out.println("PYLONS: ");
      int Number_of_Pylons=s.nextInt();
      s.nextLine();
      System.out.print("TYPE OF CRAFT: ");
      String Type=s.nextLine();
    }


};
class Base{
  public static void main(String args[]){
    Planes air[]=new Planes[2];//DID NOT CREATE OBJECTS, REFERENCE ARRAY!!!!!!!!!
    for(int j=0;j<2;j++){
      air[j]=new Planes();
    }// CREATED OBJECTS OF CLASS PLANE!!!!!!!!!
    int i=0;
    for(i=0;i<2;i++)
    {
      System.out.println("Enter values for the planes:");
      air[i].EnterValues();
    }
    System.out.println(air[0].Name);//Test for Print, prints NULL idk why :(
      for(i=0;i<2;i++)//Display the Entered Details
      {
      System.out.println("Name: "+air[i].Name+"Number of Pylons: "+air[i].Number_of_Pylons+"Type: "+air[i].Type);
      }
    }
  };

Es un código bastante simple, pero me parece que no puede ser capaz de conseguir que funcione. También me disculpo por mi Inglés. No es mi primera lengua.

Kris:

Es un problema de alcance clásico. Creo que no se ha aprendido el alcance-concepto bien en Java.

class Planes{
  String Name;  //instance variable
  int Number_of_Pylons;//instance variable
  String Type;//instance variable

  void EnterValues()
    {
      Scanner s=new Scanner(System.in);
      System.out.println("NAME: ");
      String Name=s.nextLine(); //local variable
      System.out.println("PYLONS: ");
      int Number_of_Pylons=s.nextInt(); //local variable
      s.nextLine();
      System.out.print("TYPE OF CRAFT: ");
      String Type=s.nextLine(); //local variable
    }


};

He comentado en el código anterior sobre el tipo de variables que ha utilizado. Por lo tanto, si se escribe algo así como

String Name=s.nextLine(); 

Simplemente asigna el valor a la variable local, Namecuyo alcance es dentro de la función solo. Esto no asigna nada a su objeto. Si desea asignar valores a las propiedades de objetos hay que hacerlo como

this.Name=s.nextLine();

Cuando se especifica este thisámbito es el nivel de instancias. Ahora su propiedad de objeto Nametiene el valor. Del mismo modo para otros también. Puede corregir restante y hacer que funcione.

Por cierto, las convenciones de nombres usados, el formato del código, etc., se siente como un .Netmodelo. Familiarizarse con las mejores prácticas de codificación Java - porque todo está roto aquí !.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=300575&siteId=1
Recomendado
Clasificación