尝试打印数据显示Null



我想要一些关于我作为示例编写的代码的帮助。我目前正在使用Atom记事本编写代码。

问题说明:

获取"平面详细信息"的用户输入。

预期输出:

打印用户输入的数据。

问题:

我可以成功地接受用户的输入,但在打印时,所有值都显示为NULL

代码:

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);
}
}
};

这是一个相当简单的代码,但我似乎无法使它发挥作用。我也为我的英语道歉。这不是我的第一语言。

这是一个经典的作用域问题。我认为您在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
}

};

我已经对上面的代码发表了关于您使用的变量类型的评论。所以,如果你写一些类似的东西

String Name=s.nextLine(); 

它只是将值分配给局部变量Name,其作用域仅在函数内部。这不会为对象指定任何内容。如果你想给对象属性赋值,它必须像一样完成

this.Name=s.nextLine();

当您指定此this时,作用域为实例级别。现在,对象属性Name具有该值。其他人也是如此。你可以修复剩余的并使其工作。

BTW,使用的命名约定,代码格式等,感觉就像.Net模型。熟悉java编码的最佳实践,因为这里已经完全崩溃了!。

您确实向用户询问了值,但没有将这些值设置为当前对象

void EnterValues(){
Scanner s = new Scanner(System.in);
System.out.println("NAME: ");
this.name = s.nextLine(); // assign the value to the object's name
System.out.println("PYLONS: ");
this.number_of_Pylons=s.nextInt();
s.nextLine();
System.out.print("TYPE OF CRAFT: ");
this.type=s.nextLine();
}

此外,Java约定较低。变量名的AmelCase

相关内容

  • 没有找到相关文章