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.
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, Name
cuyo 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 Name
tiene 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 .Net
modelo. Familiarizarse con las mejores prácticas de codificación Java - porque todo está roto aquí !.