2013-08-07 79 views
-1

當用戶在JTextField中輸入員工的姓名(用空格分隔)時,員工的職位將顯示在第二個JTextField中。包括 twoJLabels描述用於數據輸入theJTextFields,以及包括第三 JLabel的,如果沒有找到匹配的 員工持有該員工的標題或錯誤消息Swing Java員工計劃

每一件事工作正常,但是當我包括以下組成部分代碼只出現錯誤信息 「員工未找到」 即使陣列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"); 

    } 
} 

而且我不知道你的意思是&&代替||,但我不知道到底是什麼你要去。

在這種情況下,只需坐下來仔細查看代碼即可。一次只讀一行(或使用調試器),並查看是否可以發現問題。如果有幫助,在紙上寫出迭代。

希望有所幫助。

順便說一下,是的,有更清晰的方法來編寫上述循環。我將把它作爲OP的練習。