【发布时间】:2014-03-28 13:02:47
【问题描述】:
我正在编写一个具有不同类的程序,而且因为我是编程新手,所以这让我很困惑。我不确定问题出在哪里,尽管我认为我可以将其定位为两段代码。但是为了透明起见,我会把整个代码都放进去。
总体目标是构建一个数组,将人们的姓名和地址添加到数组中(我不需要删除任何人),这是通过用户输入从主类完成的。首先,我使用 getter 和 setter 方法。这里似乎没有问题。
public class MyAddress
{
String name = "";
String address = "";
//@param Name is name of addressee
//@param Address is address of addressee
public void setName(String Name)
{
name = Name;
}
public void setAddress(String Address)
{
address = Address;
}
public String getName()
{
return name;
}
public String getAddress()
{
return address;
}
}
然后我在这个类中使用这些方法来获取用户输入并将其放入一个数组中。
public class MyAddressBook
{
public void addAddress()
{
Scanner in = new Scanner(System.in);
System.out.println("Enter name: ");
String name = in.nextLine();
System.out.println("Enter address ");
String address = in.nextLine();
//Create MyAddress object that sets the address and name and then gets those values to put into the list
MyAddress input = new MyAddress();
input.setName(name);
input.setAddress(address);
//MyAddress input = new MyAddress();
String newName = input.getName();
String newAddress = input.getAddress();
//Create a list for AddressBook with max of 10 input values
addressBook = new String[10];
//Iterates through the list to add name and address values
for (int i = 0; i < addressBook.length; i++)
{
if(addressBook[i] == null)
{
addressBook[i] = newName;
addressBook[i+1] = newAddress;
break;
}
}
}
}
虽然我仍然不确定为什么我需要 getter 和 setter,因为我似乎可以直接使用用户的输入,这是要求的,所以我已经包含了它。我的想法是遍历数组,如果值为 NULL,则输入名称,然后输入地址,然后跳出 if 语句。我在想,当我输入一个新的人和地址时,它会迭代,直到找到下一个空值,此时它会输入这个人和地址。但这似乎并没有发生。是不是因为当它为空时,它只是跳出if语句然后停止?但是即使那样,当我休息时它仍然不起作用,我将告诉你为什么。
这是主要课程。
public class MyCLI {
public static void main(String[] args) {
MyAddressBook personAddress = new MyAddressBook();
personAddress.addAddress();
Scanner in = new Scanner(System.in);
System.out.println("Add another address? Y/N");
String answer = in.nextLine();
if (answer == "Y")
{
personAddress.addAddress();
}
}
}
所以发生的事情是它在我第一次运行它时工作,但如果我需要向数组添加另一个名称和地址,它就不起作用。它似乎没有进入前面代码中 for 语句的第二次迭代。当然,这段代码中的 if 语句也可能是错误的,但我只是不知道我做错了什么以便找出如何解决它?是的,我是编程新手:)
【问题讨论】:
-
你的主程序只能添加一个地址。如果您期望第二次运行它时会从第一次运行中获得相同的数据——对不起,那是行不通的。当您重新运行程序时,它会从头开始。要完成这项工作,您需要了解如何设置文件或数据库。
-
对不起,我没有意识到这实际上添加了两个地址,而不是一个。所以主要问题是与
"Y"的比较。但是,还有其他问题。
标签: java loops object for-loop