java - 在for循环java中测试字符串数组
问题描述
我刚刚学习了 Java 的基础知识,并且正在尝试制作一个简单的登录程序,该程序可以从字符串数组中测试用户和密码,但是当事件触发时,什么也没发生,按钮就卡住了。
private void btn1ActionPerformed(java.awt.event.ActionEvent evt) {
//List of user and pass as an array
final String[] userlist = {"admin","test","lol","user"};
final String[] passlist = {"123","test","lol","user"};
//testing if correct
for(int i = 0; i > 5;i++){
if (userbox.getText().equals(userlist[i]) & passbox.getText().equals(passlist[i])){
//pops up a new panel if success
JOptionPane.showMessageDialog(rootPane, "Success");
new InputOutput().setVisible(true);
this.hide();
}else{
//pops up a message if its wrong
JOptionPane.showMessageDialog(rootPane, "Wrong Try again!");
}
}
解决方案
首先,你的 for 循环中的条件,即i > 5
,是不正确的,因为它永远不会满足,因为从i
开始0
。此外,最好使用用户名数组的实际长度,即userlist.length
, 作为条件,因为当您编辑代码时它可能会发生变化。
其次,在检查输入是否正确的 if 语句中,您使用按位与&
而不是逻辑与&&
,这可能是偶然的,因为目标是检查用户名和密码是否正确。
这是您的这部分代码的一个版本,我在其中编辑了错误:
for(int i = 0; i < userlist.length; i++) {
if(userbox.getText().equals(userlist[i]) && passbox.getText().equals(passlist[i])) {
// Success
} else {
// Failure
}
推荐阅读
- apache-spark - spark.files 是在 JVM 进程在执行程序中启动之前获取的吗?
- rest - 收到 API_Key 和 User_key 后如何解决 Pardot(api 版本 4)中的错误 49
- java - 是否可以在 EntityListener 回调方法中调用查询方法?
- firebase - Firebase Firestore认证用户篡改客户端代码后自由写入数据
- javascript - 401 Unauthorized - 通过脚本将 Google Sheet 导出为 PDF 时出现权限错误
- c# - MVC 表单提交需要带有 %20 的查询字符串而不是 '+'
- excel - 您可以在 Excel 的查找和替换的替换部分中使用通配符吗?
- php - 如何修复 Web 应用程序搜索栏中的 php 查询并显示结果
- sql - 规范化 sql 字符串组合
- c# - WM_CTLCOLOREDIT 未发送