Поиск массивов в Java: equals () Versus == - PullRequest
0 голосов
/ 10 декабря 2011

У меня есть массив с 5 элементами. Если пользователь вводит имя или должность, он должен вывести соответствующее имя или должность этого человека или должности. Вот то, что я получил, я не уверен, что я мог делать неправильно. Поскольку это апплет, мне не нужен основной метод, верно? Я что-то перепутал? Что я могу делать не так? Даже если я ввожу данные, которые хранятся в массиве, это всегда дает мне «ввод не соответствует ни одной записи», я был бы признателен за любую помощь. Заранее спасибо!

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class Assignment extends JApplet implements ActionListener

{



String[] empName = {"John Jacobs" , "Will Watts","Kevin Krust", "Allan Ayers", "Sam Smith"};

String[] empTitle = {"Software Engineer" , "Database Administrator", "Network Administrator" , "Head Programmer" ,"Department Manager"};

final int ARRAY_SIZE = 5;

boolean validName = false;

boolean validTitle = false;

String nameOfEmployee;

String titleOfEmployee;





JLabel enterInfo = new JLabel("Enter an Employee Name or Job Title");

JTextField userInput = new JTextField(20);

JButton empButton = new JButton ("Press if you entered a name");

JButton titleButton = new JButton ("Press if you entered a title");

JLabel inputDisplay = new JLabel("");

Container con = getContentPane();

public void init()

{

    con.add(enterInfo);

    con.add(userInput);        

    con.add(empButton);

    con.add(titleButton);

    con.setLayout(new FlowLayout());

    userInput.addActionListener(this);

    empButton.addActionListener(this);

    titleButton.addActionListener(this);

}

public void actionPerformed(ActionEvent event)

{

    Object source = event.getSource();

    if (source == empButton)

    {

        String nameEmp = userInput.getText();

        con.remove(enterInfo);

        con.remove(userInput);

        con.remove(empButton);

        con.remove(titleButton);

        for (int x = 0; x < ARRAY_SIZE; ++x)

            {

              if (nameEmp == empName[x])

                {

                    validName = true;

                    titleOfEmployee = empTitle[x];

                }

            }

            if(validName)

            inputDisplay.setText(nameEmp + "is a" + titleOfEmployee);



            else



            inputDisplay.setText("The title you input did not match any records.");



        con.add(inputDisplay);

        con.setBackground(Color.YELLOW);        



    }



    else

    {

        String nameJob = userInput.getText();

        con.remove(enterInfo);

        con.remove(userInput);

        con.remove(empButton);

        con.remove(titleButton);

        for (int x = 0; x < ARRAY_SIZE; ++x)

            {

              if (nameJob == empTitle[x])

                {

                    validTitle = true;

                    nameOfEmployee = empName[x];

                }

            }

            if(validName)

            inputDisplay.setText(nameOfEmployee + "is a" + nameJob);

            else

            inputDisplay.setText("The name you input did not match any records.");

        con.add(inputDisplay);

        con.setBackground(Color.YELLOW);

    }

    con.invalidate();

    con.validate();

}

}

Ответы [ 2 ]

1 голос
/ 10 декабря 2011

nameEmp == empName[x]

сравнивает ссылки на объекты.То, что вы хотите, это сравнение содержимого, поэтому вы должны проверить

nameEmp.equals(empName[x])
0 голосов
/ 10 декабря 2011

При сравнении значения, введенного пользователем, со значениями в ваших массивах, вам нужно использовать функцию equals, а не ==. Читайте, почему здесь .

...