我如何编写一个字符串数组作为一组密码?

时间:2016-08-19 22:55:40

标签: java arrays string applet

所以我试图让一个java applet接受一组多个密码,所以我当然想把它们放在数组中。但是,阵列中只有一个密码正在工作,即集合中的最后一个密码。之前没有一个会工作,我的applet否认其他人。到目前为止,这是我的代码:

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

public class JPasswordC extends JApplet implements ActionListener
{
private final String[] password = {"Rosebud", "Redrum", "Jason", "Surrender", "Dorothy"};

private Container con = getContentPane();
private JLabel passwordLabel = new JLabel("Password: ");
private JTextField passwordField = new JTextField(16);

private JLabel grantedPrompt = new JLabel("<html><font color=\"green\">Access Granted</font></html>");
private JLabel deniedPrompt = new JLabel("<html><font color=\"red\">Access Denied</font></html>");

public void init()
{
    con.setLayout(new FlowLayout());

    con.add(passwordLabel);
    con.add(passwordField);
    con.add(grantedPrompt);
    grantedPrompt.setVisible(false);
    con.add(deniedPrompt);
    deniedPrompt.setVisible(false);

    passwordField.addActionListener(this);
}

public void actionPerformed(ActionEvent ae)
{
    String input = passwordField.getText();

    for(String p : password)
    {

        if(input.equalsIgnoreCase(p))
        {
            grantedPrompt.setVisible(true);
            deniedPrompt.setVisible(false);
        }
        else
        {
            grantedPrompt.setVisible(false);
            deniedPrompt.setVisible(true);
        }
    }
}
}

我如何让它正常工作?我是否对阵列做错了什么?这完全是代码中的东西吗?

2 个答案:

答案 0 :(得分:0)

代码正在检查每个密码,即使找到了有效密码,这意味着即使找到有效密码,它仍将根据下一个密码的有效性进行更改。因此,数组中的最后一个声明了grantedPromptdeniedPrompt的状态。在输入等于其中一个密码后尝试添加break

for(String p : password)
{

    if(input.equalsIgnoreCase(p))
    {
        grantedPrompt.setVisible(true);
        deniedPrompt.setVisible(false);
        break; // break out or loop once found
    }
    else
    {
        grantedPrompt.setVisible(false);
        deniedPrompt.setVisible(true);
    }
}

答案 1 :(得分:0)

即使有匹配项,您也会循环显示所有密码。如果密码匹配,则更改代码以返回方法。

 public void actionPerformed(ActionEvent ae)
    {
        String input = passwordField.getText();

        for(String p : password)
        {

            if(input.equalsIgnoreCase(p))
            {
                grantedPrompt.setVisible(true);
                deniedPrompt.setVisible(false);
                return;
            }

        }
         grantedPrompt.setVisible(false);
         deniedPrompt.setVisible(true);

    }