【问题标题】:Java: matching two different type of arrayJava:匹配两种不同类型的数组
【发布时间】:2010-04-13 18:45:44
【问题描述】:

我正在进行密码登录,需要我匹配两个数组:用户和密码。如果用户键入“标记”和“通过”,它应该显示成功。但是我遇到了 String[] input = pass.getPassword(); 的问题以及两个数组的匹配。

  String[] User = {"mark", "susan", "bobo"};

  String[] Pass = {"pass", "word", "password"};
  String[] input = pass.getPassword();

  if(Pass.length == input.length && user.getText().equals(User))
  {
     lblstat.setForeground(Color.GREEN);
     lblstat.setText("Successful");
  }
  else
  {
     lblstat.setForeground(Color.RED);
     lblstat.setText("Failed");
  }

【问题讨论】:

  • 比“我有麻烦”更具体。您是否收到错误消息?输出?究竟是什么问题?乍一看,您似乎正在使用 getText().equals 命令将字符串与字符串数组进行比较

标签: java arrays


【解决方案1】:

我建议改用Map<K, V>。这样更容易将键值对组合在一起。

Map<String, String> logins = new HashMap<String, String>();
logins.put("mark", "pass");
logins.put("susan", "word");
logins.put("bobo", "password");

String username = user.getText();
String password = pass.getPassword();

if (logins.containsKey(username) && logins.get(username).equals(password)) {
    // Known login.
} else {
    // Unknown login.
}

要了解有关地图的更多信息,请查看Sun tutorial on the subject

【讨论】:

    【解决方案2】:

    Arrays.equals(input, Pass) 怎么样?

    【讨论】:

      【解决方案3】:

      我没有完全理解你的问题,但我可以猜到你在找什么:

      你可以使用 hashmap 代替数组,键作为用户值,值作为传递值。因此,当您想要特定用户的密码时,您可以从地图中获取。

      【讨论】:

        【解决方案4】:

        我建议您也使用某种键值数据结构。你也可以试试这个:

        char[] input = pass.getPassword();
        String password = new String(input);
        

        然后你按照 BalusC 的建议去做。 您可以考虑修剪从包含用户名的文本框中读取的字符串。

        【讨论】:

          猜你喜欢
          • 2011-08-08
          • 1970-01-01
          • 2021-07-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多