проблема со сравнением имени из метода get для строки ввода пользователя - PullRequest
0 голосов
/ 18 февраля 2011

У меня возникают проблемы при сравнении в моем операторе if, в программировании на C я использую знак "==" для сравнения двух строк ...

как насчет сравнения строки с использованием метода get с новой строкой ... я пытаюсь использовать двойной знак равенства, но мне было предложено изменить его на следующее:

if (entry [i] .getName (). Equals (EName))

кстати, это весь мой код:

import javax.swing.JOptionPane;
import javax.swing.JTextArea;

public class AddressBook {

    private AddressBookEntry entry[];
    private int counter;
    private String EName;

    public static void main(String[] args) {
        AddressBook a = new AddressBook();
        a.entry = new AddressBookEntry[100];
        int option = 0;
        while (option != 5) {
            String content = "Choose an Option\n\n"
                    + "[1] Add an Entry\n"
                    + "[2] Delete an Entry\n"
                    + "[3] Update an Entry\n"
                    + "[4] View all Entries\n"
                    + "[5] View Specific Entry\n"
                    + "[6] Exit";
            option = Integer.parseInt(JOptionPane.showInputDialog(content));
            switch (option) {
                case 1:
                    a.addEntry();
                    break;
                case 2:

                    break;
                case 3:
                    a.editMenu();
                    break;
                case 4:
                    a.viewAll();
                    break;
                case 5:
                    break;
                case 6:
                    System.exit(1);
                    break;
                default:
                    JOptionPane.showMessageDialog(null, "Invalid Choice!");
            }
        }
    }

    public void addEntry() {
        entry[counter] = new AddressBookEntry();
        entry[counter].setName(JOptionPane.showInputDialog("Enter name: "));
        entry[counter].setAdd(JOptionPane.showInputDialog("Enter add: "));
        entry[counter].setPhoneNo(JOptionPane.showInputDialog("Enter Phone No.: "));
        entry[counter].setEmail(JOptionPane.showInputDialog("Enter E-mail: "));
        counter++;
    }

    public void viewAll() {
        String addText= "";
        for (int i = 0; i <  counter; i++) {
            addText = addText+(i+1)+ entry[i].getInfo()+ "\n";
        }
        JOptionPane.showMessageDialog(null, new JTextArea(addText));
    }

    public void editMenu() {
        int option = 0;
        while (option != 6) {
            String content = "Choose an Option\n\n"
                    + "[1] Edit Name\n"
                    + "[2] Edit Address\n"
                    + "[3] Edit Phone No.\n"
                    + "[4] Edit E-mail address\n"
                    + "[5] Back to Main Menu";
            option = Integer.parseInt(JOptionPane.showInputDialog(content));
            switch (option) {
                case 1:
                    editName();
                    break;
                case 2:
                    editAdd();
                    break;
                case 3:
                    editPhoneNo();
                    break;
                case 4:
                    editEmail();
                    break;
                case 5:
                    return;
                default:
                    JOptionPane.showMessageDialog(null, "Invalid Choice!");
            }
        }
    }

    public void editName() {
        EName = JOptionPane.showInputDialog("Enter name to edit: ");
        for (int i = 0; i < counter; i++) {
            if (entry[i].getName().equals(EName)) {
                //JOptionPane.showMessageDialog(null, "found");
                entry[i].setName(JOptionPane.showInputDialog("Enter new name: "));
            }else {
                JOptionPane.showMessageDialog(null, "Entered Name not Found!");
            }
        }
    }

    public void editAdd() {
        EName = JOptionPane.showInputDialog("Enter name to edit: ");
        for (int i = 0; i < counter; i++) {
            if (entry[i].getName().equals(EName)) {
                //JOptionPane.showMessageDialog(null, "found");
                entry[i].setAdd(JOptionPane.showInputDialog("Enter new Address: "));
            }else {
                JOptionPane.showMessageDialog(null, "Entered Name not Found!");
            }
        }
    }

    public void editPhoneNo() {
        EName = JOptionPane.showInputDialog("Enter name to edit: ");
        for (int i = 0; i < counter; i++) {
            if (entry[i].getName().equals(EName)) {
                //JOptionPane.showMessageDialog(null, "found");
                entry[i].setPhoneNo(JOptionPane.showInputDialog("Enter new Phone No.: "));
            }else {
                JOptionPane.showMessageDialog(null, "Entered Name not Found!");
            }
        }
    }

    public void editEmail() {
        EName = JOptionPane.showInputDialog("Enter name to edit: ");
        for (int i = 0; i < counter; i++) {
            if (entry[i].getName().equals(EName)) {
                //JOptionPane.showMessageDialog(null, "found");
                entry[i].setEmail(JOptionPane.showInputDialog("Enter new E-mail add: "));
            }else {
                JOptionPane.showMessageDialog(null, "Entered Name not Found!");
            }
        }
    }
}

а это мой другой класс:

public class AddressBookEntry {

    private String name;
    private String add;
    private String phoneNo;
    private String email;
    private int entry;

    public String getAdd() {
        return add;
    }

    public String getEmail() {
        return email;
    }

    public int getEntry() {
        return entry;
    }

    public String getName() {
        return name;
    }

    public String getPhoneNo() {
        return phoneNo;
    }

    public void setAdd(String add) {
        this.add = add;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public void setEntry(int entry) {
        this.entry = entry;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setPhoneNo(String phoneNo) {
        this.phoneNo = phoneNo;
    }

    public String getInfo() {
        String Info = "NAME\tADDRESS\tPHONE NO.\tE-MAIL ADD\n"
                + name + "\t " + add + "\t " + phoneNo + "\t " + email + "\n";
        return Info;
    }

    public String getInfo2() {
        String content = "INFORMATION:\n\n"
                + "Name: " + name + "\n"
                + "Address: " + add + "\n"
                + "Tel. No: " + phoneNo + "\n"
                + "Email Add: " + email + "\n\n";
        return content;
    }
}

ПОЖАЛУЙСТА, ПРОЧИТАЙТЕ МОЙ КОД ... Я новичок в Java ... пожалуйста, помогите ....

то, что я хочу, это перейти ко всему массиву и отредактировать конкретную деталь, если пользовательский ввод был равен записи [i] .getName ()

Большое спасибо заранее ...

Ответы [ 2 ]

3 голосов
/ 18 февраля 2011

Используйте equals(), если хотите сравнить представление строки, а не ее идентичность объекта.

Предположим, у нас есть: String s = "hello";

s == s
=> true // they are the *same* object
"hello" == new String("hello") // see comment below...
=> false // they are different objects representing the same string of text
"hello".equals("hello")
=> true
s.equals("hello")
=> true
1 голос
/ 18 февраля 2011

Необходимо понять как минимум 3 вещи:

Java: == проверяет, указывают ли две ссылки на один и тот же объект, а равно проверяет, имеют ли два объекта одинаковое содержимое.Таким образом, даже если две строки имеют одинаковое содержимое, == может дать false, тогда как s1.equals (s2) даст true.Вы можете найти много информации об этом в Google.

C: В C вы не должны сравнивать две строки, используя == либо.Строки в C обычно имеют тип char * (или const char *), и вы должны сравнить их со strcmp (иначе вы столкнетесь с теми же проблемами, что и в Java).

C ++: экземпляры std :: stringможно сравнить с помощью ==.

...