Swing Java员工程序

Swing Java员工程序,java,swing,Java,Swing,当用户在列表中键入员工的名字和姓氏(用空格分隔)时 JTextField,员工的职务显示在第二个JTextField中。包括 两个jlabel,用于描述用于数据输入的jtext字段,并包括第三个jtext字段 JLabel,用于保存员工的头衔或在未找到匹配项时显示错误消息 雇员 每件事都可以正常工作,但当我包含以下代码部分时,即使数组匹配,也只会出现错误消息“Employee not found”。如果没有此语句,代码可以正常工作。请帮助..谢谢 if(!(name.equalsIgnoreC

当用户在列表中键入员工的名字和姓氏(用空格分隔)时 JTextField,员工的职务显示在第二个JTextField中。包括 两个jlabel,用于描述用于数据输入的jtext字段,并包括第三个jtext字段 JLabel,用于保存员工的头衔或在未找到匹配项时显示错误消息 雇员

每件事都可以正常工作,但当我包含以下代码部分时,即使数组匹配,也只会出现错误消息“Employee not found”。如果没有此语句,代码可以正常工作。请帮助..谢谢

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

    }  

package appletLesson;
导入javax.swing.*;
导入java.awt.*;
导入java.awt.event.*;
导入javax.swing.*;
导入java.awt.*;
导入java.awt.event.*;
导入java.awt.Color.*;
公共类JEmployeeTitle扩展了JApplet实现ActionListener
{ 
字符串[]empName={“詹姆斯”、“汤姆”、“史蒂夫”、“巴拉克”、“约翰”};
String[]jobName={“Blunt”、“Kites”、“Jobs”、“Obama”、“Smith”};
String[]jobTitle={“演员”、“商人”、“首席执行官”、“总裁”、“画家”};
JLabel fnameLabel=新的JLabel(“输入名字:”);
JLabel lnameLabel=新的JLabel(“输入姓氏:”);
JButton按钮=新JButton(“提交”);
JLabel errorortitle=新的JLabel(“”);
JTextField fnameField=新的JTextField(20);
JTextField lnameField=新的JTextField(20);
容器con=getContentPane();
公共void init()
{ 
立根背景(颜色为黄色);
con.添加(fnameLabel);
con.add(fnameField);
con.添加(lnameLabel);
con.add(lnameField);
con.添加(按钮);
补充条款(错误报告);
con.setLayout(新的FlowLayout());
fnameField.addActionListener(此);
lnameField.addActionListener(此);
addActionListener(这个);
} 
已执行的公共无效操作(操作事件e)
{ 
String name=fnameField.getText();
字符串job=lnameField.getText();
对于(int x=0;x<5;x++)
{ 
if(name.equalsIgnoreCase(empName[x])| | job.equalsIgnoreCase(jobName[x]))
{ 
errorortitle.setText(职务[x]);
} 
if(!(name.equalsIgnoreCase(empName[x])| | job.equalsIgnoreCase(jobName[x]))
{ 
errorortitle.setText(“未找到员工”);
} 
}
验证();
} 
}

您的问题在这个循环中:

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");

    } 
}
for(int x=0;x<5;x++)
{ 
if(name.equalsIgnoreCase(empName[x])| | job.equalsIgnoreCase(jobName[x]))
{ 
errorortitle.setText(职务[x]);
} 
if(!(name.equalsIgnoreCase(empName[x])| | job.equalsIgnoreCase(jobName[x]))
{ 
errorortitle.setText(“未找到员工”);
} 
}
一旦找到匹配项,您就应该跳出循环,否则您将继续遍历所有名称,并用“Employee not found”覆盖正确的职务。(我打赌你的原始代码可以正确地与约翰·史密斯(John Smith)和其他人一起工作——试试看。)因此,例如:

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");

    } 
}
for(int x=0;x<5;x++)
{ 
if(name.equalsIgnoreCase(empName[x])| | job.equalsIgnoreCase(jobName[x]))
{ 
errorortitle.setText(职务[x]);
break;//停止检查
} 
if(!(name.equalsIgnoreCase(empName[x])| | job.equalsIgnoreCase(jobName[x]))
{ 
errorortitle.setText(“未找到员工”);
} 
}
另外,我想知道你是指
&
而不是
|
,但我不知道你到底想要什么

在这种情况下,坐下来仔细查看代码会有所帮助。在头脑中一次一行地检查一遍(或者使用调试器),看看是否能发现问题。如果有帮助,在纸上写下迭代

希望有帮助


顺便说一下,是的,有更干净的方法来编写上述循环。我将把它作为练习留给OP。

我们不做你的家庭作业。错误是什么?你试图纠正什么情况?@Hexafrance我投票决定结束……你怎么能说这是家庭作业?@SethCohen-这不是很明显吗?即使从技术上讲它不是家庭作业,它也是一种学习练习。这显然不是一个试图编写真实应用程序的人所做的工作。呵呵,是的,我知道是的,只是想搞笑而已
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");

    } 
}