2013-08-07 4 views
-1

Когда пользователь вводит имя и фамилию сотрудника (разделенное пробелом) в JTextField, заголовок задания сотрудника отображается во второмJTextField. Включите twoJLabels для описания theJTextFields, используемые для ввода данных, и включают в себя третий JLabel, который содержит название работника или сообщение об ошибке, если совпадение не найдено для работникаSwing Java Employee Program

Каждая вещь работает отлично, но когда я включать в себя следующие части код только сообщение об ошибке "Сотрудник не найден", даже если массив matches.Without это утверждение код работает fine.please help..thanks

if(!(name.equalsIgnoreCase(empName[x]) || job.equalsIgnoreCase(jobName[x]))) 
    { 
     errorortitle.setText("Employee not found"); 

    } 

 

package appletLesson; 

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.awt.Color.*; 
public class JEmployeeTitle extends JApplet implements ActionListener 
{ 
String[] empName = {"James", "Tom", "Steve", "Barack", "John"}; 
String[] jobName = {"Blunt", "Kites", "Jobs", "Obama", "Smith"}; 
String[] jobTitle = {"Actor", "Buisness men", "CEO", "President", "Painter"}; 

JLabel fnameLabel = new JLabel("Enter First Name:"); 
JLabel lnameLabel = new JLabel("ENter Last Name:"); 
JButton button = new JButton("Submit"); 
JLabel errorortitle = new JLabel(" "); 
JTextField fnameField = new JTextField(20); 
JTextField lnameField = new JTextField(20); 

Container con = getContentPane(); 
public void init() 
{ 
    con.setBackground(Color.YELLOW);  

    con.add(fnameLabel); 


    con.add(fnameField); 
    con.add(lnameLabel); 
    con.add(lnameField); 
    con.add(button); 
    con.add(errorortitle); 
    con.setLayout(new FlowLayout()); 
    fnameField.addActionListener(this); 
    lnameField.addActionListener(this); 
    button.addActionListener(this); 
} 
public void actionPerformed(ActionEvent e) 
{ 
    String name = fnameField.getText(); 
    String job = lnameField.getText(); 
    for(int x = 0; x < 5; x++) 
    { 
     if(name.equalsIgnoreCase(empName[x]) ||   job.equalsIgnoreCase(jobName[x])) 
     { 
      errorortitle.setText(jobTitle[x]); 

     } 
     if(!(name.equalsIgnoreCase(empName[x]) || job.equalsIgnoreCase(jobName[x]))) 
     { 
      errorortitle.setText("Employee not found"); 

     } 
      } 
    validate(); 
} 
} 
+3

Мы не делаем домашнее задание. Какова ошибка и что вы пытались исправить ситуацию? – hexafraction

+0

@hexafraction Я голосую, чтобы закрыть ... –

+1

Как вы могли сказать, что это была домашняя работа? – chiliNUT

ответ

1

Ваша проблема заключается в этом цикле:

for(int x = 0; x < 5; x++) 
{ 
    if(name.equalsIgnoreCase(empName[x]) || job.equalsIgnoreCase(jobName[x])) 
    { 
     errorortitle.setText(jobTitle[x]); 

    } 
    if(!(name.equalsIgnoreCase(empName[x]) || job.equalsIgnoreCase(jobName[x]))) 
    { 
     errorortitle.setText("Employee not found"); 

    } 
} 

Вы должны выйти из цикла, когда вы найдете матч, в противном случае вы будете просто продолжать через все имена и перезаписать правильный jobTitle с «Сотрудник не найден ». (Держу пари, ваш исходный код корректно работает с Джоном Смитом, и никто другой - попробовать его.) Так, например:

for(int x = 0; x < 5; x++) 
{ 
    if(name.equalsIgnoreCase(empName[x]) ||   job.equalsIgnoreCase(jobName[x])) 
    { 
     errorortitle.setText(jobTitle[x]); 
     break; // stop checking 
    } 
    if(!(name.equalsIgnoreCase(empName[x]) || job.equalsIgnoreCase(jobName[x]))) 
    { 
     errorortitle.setText("Employee not found"); 

    } 
} 

Также интересно, если вы имеете в виду && вместо ||, но я не знаю точно, что вы идете.

В подобных ситуациях это помогает просто сесть и внимательно посмотреть на свой код. Пройдите через него в вашей голове по одной строке за раз (или используйте отладчик) и посмотрите, сможете ли вы выявить проблему. Запишите итерации на бумаге, если это поможет.

Надеюсь, что это поможет.

Кстати, да, есть более чистые способы написать вышеперечисленные циклы. Я оставлю это как упражнение для ОП.