结合两个if语句

时间:2014-02-12 00:21:41

标签: java if-statement arraylist

我只允许在主菜单中有4个选项,我创建了5.我无法弄清楚如何将最后2个输出语句放在一起,这样就可以从另一个内部调用。所以他们都可以使用相同的菜单选项。

选项3和4需要以某种方式在彼此内部,以便我可以显示输入的所有联系人的姓名,然后提示用户选择联系人ID以显示该联系人的其余详细信息。

尝试将两者合并到一个if语句中,并且没有为添加的第二个联系人正确显示全名。它再次显示第一个名称,然后要求提供联系人ID以显示详细信息。如果您显示详细信息,则会返回正确的详细信息以及输入的最后一个联系人的姓名。

以下是我们分开时所拥有的:

package ooo1;

import java.util.ArrayList;
import java.util.Scanner;

public class ContactList {

    public static void main(String[] args) {

        ArrayList<Contact> contacts = new ArrayList<>();

        Scanner input1 = new Scanner(System.in);
        int type = 0;
        while(type != 5){
        System.out.println("Please select an option: ");
        System.out.println("Add a Personal Contact: Enter 1 ");
        System.out.println("Add a Business Contact: Enter 2 ");
        System.out.println("Display Contacts List: Enter 3 ");
        System.out.println("Display Contact Details: Enter 4 ");
        System.out.println("To Quit: Enter 5 ");

        type = input1.nextInt();

        if(type == 5){
            System.out.println("Goodbye ");
            break;
        }
 if (type == 1 || type == 2){

         Contact contact = null;

        Scanner input = new Scanner(System.in);
        System.out.println("Please enter ContactId : ");
        String contactId = input.nextLine();
        System.out.println("Please enter First Name : ");
        String firstName = input.nextLine();
        System.out.println("Please enter Last Name : ");
        String lastName = input.nextLine();
        System.out.println("Please enter Address in the following format : ");
        System.out.println("Street Address, City, State, Zip Code");
        String address = input.nextLine();
        System.out.println("Please enter Phone Number : ");
        String phoneNumber = input.nextLine();
        System.out.println("Please enter Email Address : ");
        String emailAddress = input.nextLine();

        //Create a personal contact.
        if(type == 1){
           System.out.println("Please enter Birthday: ");
           String dateofBirth = input.nextLine();
           Contact pcontact = new PersonalContact(contactId, firstName, lastName, address, phoneNumber, emailAddress, dateofBirth);
           contacts.add(pcontact);
           System.out.println("Contact Added Successfully");
           System.out.println();
        }
        //Create a business contact.
        else if(type == 2){
            System.out.println("Please enter Job Title: ");
            String jobTitle = input.nextLine();
            System.out.println("Please enter Organization: ");
            String organization = input.nextLine();
            Contact bcontact = new BusinessContact(contactId, firstName, lastName, address, phoneNumber, emailAddress, jobTitle, organization);
            contacts.add(bcontact);
            System.out.println("Contact Added Successfully");
            System.out.println();
        }

    }
    if (type == 3 || type == 4){

        //Print full name of each Contact.
        if(type == 3){
            for (Contact namecontact: contacts)
            {
                System.out.println(namecontact.displayFullName());
                System.out.println();
            }
        } 
        //Print contact details for selected contact.
        else if(type == 4){
                System.out.println("Enter a Contact ID to display Contact Details: ");
                Scanner input2 = new Scanner(System.in);
                String soughtID;
                soughtID = input2.nextLine();
            for (Contact showcontact1: contacts)
                {
                   if (showcontact1.displayId().equals(soughtID))
                    System.out.println(showcontact1.displayContact());
                   System.out.println();
                }
            }
         }
      }
  }
}

这是他们调用的父类:

package ooo1;

public abstract class Contact {

    String contactId;
    String firstName;
    String lastName;
    String address;
    String phoneNumber;
    String emailAddress;

    public Contact(String contactId,String firstName,String lastName, String address, String phoneNumber, String emailAddress)
    {
        this.contactId = contactId;
        this.firstName = firstName;
        this.lastName = lastName;
        this.address = address;
        this.phoneNumber = phoneNumber;
        this.emailAddress = emailAddress;
    }
    public void setContactId(String input){
        this.contactId = input;
    }
    public String getContactId(){
        return contactId;
    }

    public void setFirstName(String input){
        this.firstName = input;
    }
    public String getFirstName(){
        return firstName;
    }

    public void setLastName(String input){
        this.lastName = input;
    }
    public String getLastName(){
        return lastName;
    }

    public void setAddress(String input){
        this.address = input;
    }
    public String getAddress(){
        return address;
    }

    public void setPhoneNumber(String input){
        this.phoneNumber = input;
    }
    public String getPhoneNumber(){
        return phoneNumber;
    }

    public void setEmailAddress(String input){
        this.emailAddress = input;
    }
    public String getEmailAddress(){
        return emailAddress;
    }

    @Override
    public String toString(){
       return ("ContactID: " + this.getContactId() + "\nFirst Name: " + this.getFirstName() + "\nLast Name: " + this.getLastName() + "\nAddress: " + this.getAddress() + "\nPhone Number: " + this.getPhoneNumber() + "\nEmail Address " + this.getEmailAddress());
    }

    public String displayFullName(){
        return ("ContactID: " + this.getContactId() + "\nFirst Name: " + this.getFirstName() + "\nLast Name: " + this.getLastName());
    }

    public String displayContact(){
        return ("ContactID: " + this.getContactId() + "\nFirst Name: " + this.getFirstName() + "\nLast Name: " + this.getLastName() + "\nAddress :" + this.getAddress() + "\nPhone Number :" + this.getPhoneNumber() + "\nEmail Address " + this.getEmailAddress());
    }
    public String displayId(){
        return (this.getContactId());
    }          
}

这是我试图在主要方面改变以摆脱其他选项并且结果不佳:

if(type == 3){             for(联系方式contactcontact:contacts)             {                 的System.out.println(namecontact.displayFullName());                 的System.out.println();                 System.out.println(“输入联系人ID以显示联系人详细信息:”);                 扫描仪输入2 =新扫描仪(System.in);                 String seekID;                 seekID = input2.nextLine();             for(联系showcontact1:contacts)                 {                    if(showcontact1.displayId()。equals(seekID))                     的System.out.println(showcontact1.displayContact());                    的System.out.println();

以下是更改之前的输出方式,以及更改后的方式。

这是我在改变之前所做的事情,除非我在主菜单中有太多选项。

请选择一个选项: 添加个人联系人:输入1 添加业务联系人:输入2 显示联系人列表:输入3 显示联系人详细信息:输入4 退出:输入5 3 ContactID:2 名字:汤姆 姓氏:琼斯

请选择一个选项: 添加个人联系人:输入1 添加业务联系人:输入2 显示联系人列表:输入3 显示联系人详细信息:输入4 退出:输入5 4 输入联系人ID以显示联系人详细信息: 2 个人联系: ContactID:2 名字:汤姆 姓氏:琼斯 地址:西街234号 电话号码:123-345-2345 电子邮件地址tjones@www.com 出生日期:12-12-1893

当我把2放在一起时会发生这种情况。它需要新的肠道。简史密斯补充道。当我输入3来显示联系人。我希望它能让我回到简和汤姆,但它让我回到汤姆身边。当我要求Toms的详细信息时,我得到了Toms的详细信息,但我也得到了Janes的名字和我之前想要的名字。

请输入ContactId: 1 请输入名字: 简 请输入姓氏: 工匠 请按以下格式输入地址: 街道地址,城市,州,邮政编码 234霍华德 请输入电话号码: 123-235-2345 请输入电子邮件地址: jsmith@yahoo.com 请输入生日: 1978年12月12日 联系已成功添加

请选择一个选项: 添加个人联系人:输入1 添加业务联系人:输入2 显示联系人列表:输入3
退出:输入5 3 ContactID:12 名字:汤姆 姓氏:Hones

输入联系人ID以显示联系人详细信息: 12 个人联系: ContactID:12 名字:汤姆 姓氏:Hones 地址:234 south st 电话号码:234-232-2356 电子邮件地址thones@www.com 出生日期:12-12-45

ContactID:1 名字:简 姓氏:史密斯

2 个答案:

答案 0 :(得分:1)

你可以这样做,

System.out.println("Please select an option (1-4), any other number to Quit");
System.out.println("Add a Personal Contact: Enter 1 ");
System.out.println("Add a Business Contact: Enter 2 ");
System.out.println("Display Contacts List: Enter 3 ");
System.out.println("Display Contact Details: Enter 4 ");
type = input1.nextInt();
if (type < 1 || type > 4) {
  System.out.println("Goodbye ");
  break;
}

答案 1 :(得分:1)

因此,如果我理解正确,您希望嵌套选项3和4,以便选项3显示所有联系人,然后选择显示特定联系人:

// Other menu code here...
System.out.println("Query Contacts: Enter 3");
System.out.println("To Quit: Enter 4");

// Other code here...

// Bring up sub-menu
// Feel free to extend to return to main menu etc.
if (type == 3){
    while (true) {
       System.out.println("List Contacts: Enter 1");
       System.out.println("Display Contact Details: Enter 2");
       System.out.println("To Quit: Enter 3");

       // If you need, store in another int etc.
       type = input1.nextInt();

       //Print full name of each Contact.
       if (type == 1) {
          for (Contact namecontact: contacts) {
             System.out.println(namecontact.displayFullName());
             System.out.println();
          }
       }
       //Print contact details for selected contact.
       else if(type == 2){
          System.out.println("Enter a Contact ID to display Contact Details: ");
          Scanner input2 = new Scanner(System.in);
          String soughtID;
          soughtID = input2.nextLine();

          for (Contact showcontact1: contacts) {
              // Although correct, I'd recommend you add a braces for if statements
              // Saving a line for a closing brace is not generally worth it
              if (showcontact1.displayId().equals(soughtID))
                 System.out.println(showcontact1.displayContact());
              System.out.println();
          }
       } else if (type == 3) {
          break;
       }
    }
}