java - 一起显示两个单个数组
问题描述
我在这里挣扎。我的程序是关于使用数组进行简单的登录和登录。现在,每当我想登录时,只要我想检查我创建的所有帐户是否成功收集在一个数组中,我都希望显示所有用户名和密码。现在,每当我想显示所有帐户时,都不会显示用户名,而只会显示密码。这是我的代码:
package login;
import java.util.*;
import static java.lang.System.out;
public class login {
public static void main(String [] args) {
String user [] = new String [100];
String pass [] = new String [100];
int sign=0;
boolean again=true, logAgain=true;
Scanner scan = new Scanner (System.in);
while(again) {
out.println("[1]Sign-up\n[2]Log-in\n[3]Display Account?\n[4]Exit");
out.print("Select: ");
int a=scan.nextInt();
if (a==1) {
again=false;
sign++;
out.print("Username: ");
user[sign]=scan.nextLine();
scan.nextLine();
out.print("Password: ");
pass[sign]=scan.nextLine();
out.println("Log in now? [Y/N] : ");
String b=scan.next();
if(b.equals("Y")||b.equals("y")) {
again=true;
} else {
again=false;
System.exit(0);
}
} else if(a==2){
again=false;
logAgain=true;
while(logAgain) {
out.print("Username: ");
String userU=scan.nextLine();
scan.nextLine();
out.print("Password: ");
String userP=scan.nextLine();
if (userU.equals(user[sign])&&userP.equals(pass[sign])) {
out.println("You're logged in!");
logAgain=false;
out.println("Back to menu? [Y/N] : ");
String c=scan.next();
if (c.equals("Y")||c.equals("y")) {
again=true;
} else {
System.exit(0);
}
}else if (!userU.equals(user[sign])&&userP.equals(pass[sign])) {
out.println("Invalid username or Password!");
logAgain=true;
}else {
again=true;
logAgain=false;
out.println("Please register first!");
}
}
} else if (a==3) {
again=false;
if (sign<1) {
out.println("\nNo account to display!\nPlease sign-up first.\n");
again=true;
} else {
System.out.println("");
System.out.printf("%-15s%10s\n","Username","Passwords");
for (int i = 1; i <=sign; i++)
System.out.printf("%-15s%10s\n",user[i],pass[i]);
System.out.println("");
out.println("Back to menu? [Y/N] : ");
String c=scan.next();
if (c.equals("Y")||c.equals("y")) {
again=true;
} else {
System.exit(0);
}
}
} else if(a==4) {
again=false;
System.exit(0);
} else {
}
}
}
}
我的输出是这样的:
[1]Sign-up
[2]Log-in
[3]Display Account?
[4]Exit
Select: 3
Username Passwords
Password
pass
evohohivr
Back to menu? [Y/N] :
先感谢您。
解决方案
您丢弃了错误的Scanner
输入。它应该是这样的:
if (a==1) {
again=false;
sign++;
out.print("Username: ");
scan.nextLine(); // This was the wrong order
user[sign]=scan.nextLine();
out.print("Password: ");
pass[sign]=scan.nextLine();
out.println("Log in now? [Y/N] : ");
String b=scan.next();
if(b.equals("Y")||b.equals("y")) {
again=true;
} else {
again=false;
System.exit(0);
}
}
推荐阅读
- ios - 等待调试连接时出错:日志读取器意外失败
- windows - Windows 中 docker 和 vagrant 的 Hypervisor 启动问题
- xcode - 调试 Unity 编辑器时,Xcode 不会在断言失败时停止执行
- node.js - 计算弹性搜索中两点之间的距离
- python - Heroku / Python / Dash 的新手:如何定义数据即应用程序的架构(使用 excel 文件)
- python - 如何在 Python 中的 map 中编写指令?
- wordpress - 一段时间后如何自动关闭wordpress页面?
- typescript - 在Typescript中从对象数组到对象对象
- linux - 使用 python 读取文件在 Linux 中无法正常工作
- delphi - E2010 不兼容的类型:“System.Rtti.T”和“MyInterfaceImpl.T”泛型