制作一个小型博客应用程序,只需设置保存数据的位置即可。我有3个类,一个用于用户的帖子,一个用于测试,我将其命名为Blog。当我尝试调用getName();它赢得运行的Blog类中的方法一直说它需要一个字符串,但我创建了一个用户对象数组,并为userName点输入一个字符串,它仍然无法正常工作。
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);
}
}
答案 0 :(得分:2)
public void getName(String userName)
{
System.out.println(userName);
}
这里你的函数需要一个String。这就是为什么它需要字符串来运行。如果要在循环中打印当前User对象的userName,请使用此。
public void getName()
{
System.out.println(this.userName);
}
这是指循环中的当前User对象。 现在回到你的循环。
for(int counter = 0; counter<userList.length; counter++)
{
User.getName();
}
您使用User类,同时将变量创建为
User[] userList = new User[3];
要从var中打印,您应该使用var。
for(int counter = 0; counter<userList.length; counter++)
{
userList[counter].getName();
}
答案 1 :(得分:0)
您需要从status
数组访问User
实例(或以其他方式获取实例)来调用方法(并将其分配给变量并使用它或只打印它)。在Java中,使用userList
执行数组访问。像
[]
您还可以使用增强型for循环(for-each loop),例如
for (int counter = 0; counter < userList.length; counter++)
{
System.out.println(userList[counter].getName());
}
另外,我认为for (User user : userList) {
System.out.println(user.getName());
}
不应该是shadowing类getName
字段。你想要的东西,
name
或遵循Java在getter中返回值的做法(并修复上面的示例)
public void getName()
{
System.out.println(this.userName);
}
答案 2 :(得分:0)
那是因为您指定User类中的getName方法将String作为参数。你这样做了:
public void getName(String userName)
{
System.out.println(userName);
}
所以它完全以你告诉它的方式工作。
但实际上,你想要&#34; setName()&#34;取一个String arg和&#34; getName()&#34;不采取任何争议。它应该是这样的:
public void setName(String new_userName)
{
username = new_userName;
}
public void getName()
{
System.out.println(userName);
}
但即便如此,我还是说你的方法名称有点含糊不清:我应该使用&#34; getName&#34;获取用户名,或获取realName? (你发现了错误吗?)
答案 3 :(得分:0)
看起来你想要的是将用户实例的名称而不是参数打印到getName方法。尝试这样定义方法:
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();
}
答案 4 :(得分:0)
的问题:
a)调用不带任何对象的getName(),即作为静态函数。而是使用创建的对象并将其命名为:
userList[counter].getName();
b)使用名称(在构造函数中)创建User对象,并使用参数(即userName)调用getName。这是错误的/不需要的。创建对象时,您已经向对象通知了userName。所以有一个干净的吸气剂,没有任何争论。
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);
}
}
答案 5 :(得分:-1)
你必须在调用之前创建User类的对象,否则你的User类应该是静态的,直接调用它。
for(int counter = 0; counter<userList.length; counter++)
{ User obj = new User();
obj.getName();
}
其他
public static User
{
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);
}
}