Can';在Java中,不要从单独的类调用方法
制作一个小的迷你博客应用程序,只需设置存放数据的位置。我有3个类,一个用于帖子,一个用于用户,一个用于测试,我将其命名为Blog。当我尝试调用getName()时;方法,它不会运行它一直说它需要一个字符串,但我创建了一个用户对象数组,并为用户名点输入了一个字符串,但它仍然不起作用Can';在Java中,不要从单独的类调用方法,java,methods,Java,Methods,制作一个小的迷你博客应用程序,只需设置存放数据的位置。我有3个类,一个用于帖子,一个用于用户,一个用于测试,我将其命名为Blog。当我尝试调用getName()时;方法,它不会运行它一直说它需要一个字符串,但我创建了一个用户对象数组,并为用户名点输入了一个字符串,但它仍然不起作用 public class Blog { public static void main(String []args) { User[] userList = new User[3
public class Blog
{
public static void main(String []args)
{
User[] userList = new User[3];
userList[0] = new User("what.com", "TheLegionCrab", "Jake Parham", "jparham@gmail.com");
userList[1] = new User("huh.com", "RaggleFraggle", "Brett Hawkins", "bhawkins@gmail.com");
userList[2] = new User("buh.com", "SeanBeast", "Sean Sweeney", "ssweeney@gmail.com");
for(int counter = 0; counter<userList.length; counter++)
{
User.getName();
}
}
}
public class User
{
private String url;
private String userName;
private String realName;
private String email;
public User(String url, String userName, String realName, String email)
{
this.url = url;
this.userName = userName;
this.realName = realName;
this.email = email;
}
public void getName(String userName)
{
System.out.println(userName);
}
}
公共类博客
{
公共静态void main(字符串[]args)
{
用户[]用户列表=新用户[3];
userList[0]=新用户(“what.com”、“TheRegionCrab”、“Jake Parham”、”jparham@gmail.com");
userList[1]=新用户(“huh.com”、“RaggleFraggle”、“Brett Hawkins”bhawkins@gmail.com");
userList[2]=新用户(“buh.com”、“SeanBeast”、“Sean Sweeney”ssweeney@gmail.com");
对于(int counter=0;counter您需要从userList
数组中访问User
实例(或者以其他方式获取实例)来调用方法(或者将其分配给变量并使用它,或者只打印它)。在Java中,数组访问是通过[]
执行的。类似于
for (int counter = 0; counter < userList.length; counter++)
{
System.out.println(userList[counter].getName());
}
另外,我不认为getName
应该是classname
字段
public void getName()
{
System.out.println(this.userName);
}
或遵循在getter中返回值的Java实践(并修复上面的示例)
在调用之前,必须先创建User类的对象,否则您的User类应该是静态的,才能直接调用它
for(int counter = 0; counter<userList.length; counter++)
{ User obj = new User();
obj.getName();
}
{
}这是因为您指定User类中的getName方法使用字符串作为参数。您在此处执行了此操作:
public void getName(String userName)
{
System.out.println(userName);
}
所以它正按照你告诉它的方式工作
但实际上,您希望“setName()”接受字符串arg,而“getName()”不接受任何arg
public void setName(String new_userName)
{
username = new_userName;
}
public void getName()
{
System.out.println(userName);
}
public void getName()
{
System.out.println(this.userName);
}
但即便如此,我还是要说您的方法名有点模棱两可:我应该使用“getName”来获取用户名,还是使用realName?
(您发现错误了吗?看起来您想要的是将用户实例的名称而不是参数打印到getName方法。请尝试这样定义方法:
public void setName(String new_userName)
{
username = new_userName;
}
public void getName()
{
System.out.println(userName);
}
public void getName()
{
System.out.println(this.userName);
}
在主要方法中:
User[] userList = new User[3];
userList[0] = new User("what.com", "TheLegionCrab", "Jake Parham", "jparham@gmail.com");
userList[1] = new User("huh.com", "RaggleFraggle", "Brett Hawkins", "bhawkins@gmail.com");
userList[2] = new User("buh.com", "SeanBeast", "Sean Sweeney", "ssweeney@gmail.com");
for(int counter = 0; counter<userList.length; counter++)
{
userList[counter].getName();
}
User[]userList=新用户[3];
userList[0]=新用户(“what.com”、“TheRegionCrab”、“Jake Parham”、”jparham@gmail.com");
userList[1]=新用户(“huh.com”、“RaggleFraggle”、“Brett Hawkins”bhawkins@gmail.com");
userList[2]=新用户(“buh.com”、“SeanBeast”、“Sean Sweeney”ssweeney@gmail.com");
对于(int counter=0;counter问题:
a) 在没有任何对象的情况下调用getName(),即作为静态函数调用。使用创建的对象并将其称为:
userList[counter].getName();
b) 使用名称(在构造函数中)创建用户对象,并使用参数(即用户名)调用getName。这是错误的/不需要的。创建对象时,您已经将用户名告知了对象。因此,请使用无参数的干净getter
getName()
守则:
public class Blog
{
public static void main(String []args)
{
User[] userList = new User[3];
userList[0] = new User("what.com", "TheLegionCrab", "Jake Parham", "jparham@gmail.com");
userList[1] = new User("huh.com", "RaggleFraggle", "Brett Hawkins", "bhawkins@gmail.com");
userList[2] = new User("buh.com", "SeanBeast", "Sean Sweeney", "ssweeney@gmail.com");
for(int counter = 0; counter<userList.length; counter++)
{
userList[counter].getName(); # Correct this to use the created objects.
}
}
}
public class User
{
private String url;
private String userName;
private String realName;
private String email;
public User(String url, String userName, String realName, String email)
{
this.url = url;
this.userName = userName;
this.realName = realName;
this.email = email;
}
public void getName() #Remove the argument.
{
System.out.println(this.userName);
}
}
公共类博客
{
公共静态void main(字符串[]args)
{
用户[]用户列表=新用户[3];
userList[0]=新用户(“what.com”、“TheRegionCrab”、“Jake Parham”、”jparham@gmail.com");
userList[1]=新用户(“huh.com”、“RaggleFraggle”、“Brett Hawkins”bhawkins@gmail.com");
userList[2]=新用户(“buh.com”、“SeanBeast”、“Sean Sweeney”ssweeney@gmail.com");
对于(int计数器=0;计数器
这里您的函数需要一个字符串。这就是为什么它需要字符串来运行。如果您想在循环中打印当前用户对象的用户名,请使用此选项
public void getName()
{
System.out.println(this.userName);
}
这是指循环中的当前用户对象。
现在回到你的循环
for(int counter = 0; counter<userList.length; counter++)
{
User.getName();
}
要从var打印,应使用var
for(int counter = 0; counter<userList.length; counter++)
{
userList[counter].getName();
}
for(int counter=0;counter谢谢大家的帮助,努力自学,挫折感正在蔓延哈哈
public void getName()
{
System.out.println(this.userName);
}
for(int counter = 0; counter<userList.length; counter++)
{
User.getName();
}
User[] userList = new User[3];
for(int counter = 0; counter<userList.length; counter++)
{
userList[counter].getName();
}