我一直在四处寻找这个问题的答案,我似乎无法弄明白。我认为问题似乎与我的代码的“范围”有关,但我不知道我做错了什么,我真的可以使用一些帮助。我是Java的新手。
我的目标
代码
public Business addBusiness(String person, String business, String location) {
int id = 0;
for (Business business : businesses ) {
if (business.getPerson().equals(person)) {
if (business.getBusiness().equals(business)) {
if (business.getLocation().equals(location)) {
return null;
}
}
}
}
Business newBusiness = new Business(person, business, location, id);
return newBusiness;
}
运行时会发生什么
当我运行代码时,它将很乐意在具有相同细节的对象之后创建对象。这让我相信我的逻辑存在问题。我期待当它返回null时,那将是它的结束。
我很感激你可以给我解决这个问题的任何提示。
编辑:'商务'课程
public class Business {
// Attributes //
private String person, business, location;
private int id;
// Constructor //
public Business(String person, String business, String location, int id) {
this.person = person;
this.business = business;
this.location = location;
this.id = id;
}
// Getters //
public String getPerson() {
return person;
}
public String getBusiness() {
return business;
}
public String getLocation() {
return location;
}
public int getId() {
return id;
}
}
尝试
public Business addBusiness(String person, String business, String location)
{
int id = 0;
for (Business b : businesses ) {
if (b.getPerson().equals(person)) {
if (b.getBusiness().equals(business)) {
if (b.getLocation().equals(location)) {
return null;
}
}
}
}
Business newBusiness = new Business(person, business, location, id);
return newBusiness;
}
您正在使用您在循环中迭代的对象从函数的签名中屏蔽参数business
。将其重命名为b
可避免此问题。
好的 - 所以我认为我明白了。非常感谢大家对此事的帮助。
public Business addBusiness(String person, String business, String location)
{
int id = 0;
for (Business business : businesses ) {
if (business.getPerson().equals(person)) {
if (business.getBusiness().equals(business)) {
if (business.getLocation().equals(location)) {
return null;
}
}
}
}
Business newBusiness = new Business(person, business, location, id);
return newBusiness;
}
这个问题是因为我从未在创建过程中将newBusiness对象实际添加到数组中。所以每次运行它都不会匹配现有的条目,因为数组中没有条目。
正确的代码应该是这样的:
public Business addBusiness(String person, String business, String location)
{
int id = 0;
for (Business b : businesses ) {
if (b.getPerson().equals(person)) {
if (b.getBusiness().equals(business)) {
if (b.getLocation().equals(location)) {
return null;
}
}
}
}
Business newBusiness = new Business(person, business, location, id);
b.add(newBusiness); // This was the missing line, now it seems to work fine.
return newBusiness;
}
显然,我还有很多东西需要学习。