你还想继续注册么?Y/N y
请输入注册的用户名(长度不能超过六位):请输入注册的密码(长度不能超过六位): userRegisteName自动赋了空,为什么会出现这种情况,请高手帮忙,谢谢! Java codeflag_Registe:while(true)
{
System.out.print("请输入注册的用户名(长度不能超过六位):");
String userRegisteName = sc.nextLine();
if(userRegisteName.length()>6)
{
System.out.println("*****你输入的注册用户名长度超过六位,请重新注册*****");
continue;
} System.out.print("请输入注册的密码(长度不能超过六位):");
String userRegistePassword = sc.nextLine();
if(userRegistePassword.length()>6)
{
System.out.println("*****你输入的注册密码长度超过六位,请重新注册*****");
continue;
}
System.out.print("请输入对此帐户的存款:");
double userRegisteBalance = sc.nextDouble();
if(Double.isNaN(userRegisteBalance))
{
System.out.println("*****你输入的存款不是数字类型,请重新注册*****");
continue;
}
System.out.println();
acc[i] = new Account(userRegisteName,userRegistePassword,userRegisteBalance);
System.out.println("-----恭喜你注册成功!-----");
acc[i].info();
System.out.println();
while(true)
{
System.out.print("你还想继续注册么?Y/N ");
Scanner scStr = new Scanner(System.in);
String str = scStr.next();
if(str.equals("y")||str.equals("Y"))
{
break;
}else if(str.equals("n")||str.equals("N"))
{
System.out.println("谢谢你的参与!");
System.out.println();
break flag_Registe;
}else{
System.out.println("你的输入有误!请重新输入:");
}
}
请输入注册的用户名(长度不能超过六位):请输入注册的密码(长度不能超过六位): userRegisteName自动赋了空,为什么会出现这种情况,请高手帮忙,谢谢! Java codeflag_Registe:while(true)
{
System.out.print("请输入注册的用户名(长度不能超过六位):");
String userRegisteName = sc.nextLine();
if(userRegisteName.length()>6)
{
System.out.println("*****你输入的注册用户名长度超过六位,请重新注册*****");
continue;
} System.out.print("请输入注册的密码(长度不能超过六位):");
String userRegistePassword = sc.nextLine();
if(userRegistePassword.length()>6)
{
System.out.println("*****你输入的注册密码长度超过六位,请重新注册*****");
continue;
}
System.out.print("请输入对此帐户的存款:");
double userRegisteBalance = sc.nextDouble();
if(Double.isNaN(userRegisteBalance))
{
System.out.println("*****你输入的存款不是数字类型,请重新注册*****");
continue;
}
System.out.println();
acc[i] = new Account(userRegisteName,userRegistePassword,userRegisteBalance);
System.out.println("-----恭喜你注册成功!-----");
acc[i].info();
System.out.println();
while(true)
{
System.out.print("你还想继续注册么?Y/N ");
Scanner scStr = new Scanner(System.in);
String str = scStr.next();
if(str.equals("y")||str.equals("Y"))
{
break;
}else if(str.equals("n")||str.equals("N"))
{
System.out.println("谢谢你的参与!");
System.out.println();
break flag_Registe;
}else{
System.out.println("你的输入有误!请重新输入:");
}
}
{
System.out.println("谢谢你的参与!");
System.out.println();
break flag_Registe;
}这个是退出,没有问题的
但就是选“Y”的时候,会这样
你还想继续注册么?Y/N y
请输入注册的用户名(长度不能超过六位):请输入注册的密码(长度不能超过六位):注册的用户名不让赋值
String userRegisteName = sc.nextLine();就自动赋了“”String userRegistePassword = sc.nextLine(); 这个阻塞成功。。
String userRegisteName = sc.nextLine();
System.out.println("请输入注册的用户名(长度不能超过六位):");
要换行吧 不然读的时候直接读了:
请输入注册的用户名(长度不能超过六位
如果你在 请输入注册的用户名(长度不能超过六位 后按下了Enter键再输入 就会读到 请输入注册的用户名(长度不能超过六位
我初学者 说了错了 不要怪
下面接着执行的是第一个WHILE还是第二个还有就是,你默认给一个正确的用户名和密码,测试下,程序的运行顺序试试
{
System.out.print("你还想继续注册么?Y/N ");
Scanner scStr = new Scanner(System.in);
String str = scStr.next();
这里应该有个触发器或者睡一段时间你能输入参数
建议写成: "y".equals(str) 这种形式的
acc[i] = new Account(userRegisteName,userRegistePassword,userRegisteBalance);
acc[i].info();这两句屏避了么?
但我试了还是不行
在接收输入前,FLUSH一下
清空下内存
这再不行就没招了
那你看看你的存款是否正常
while(true)
{
Scanner sc=new Scanner(System.in);
System.out.print("请输入注册的用户名(长度不能超过六位):");
String userRegisteName = sc.next();
if(userRegisteName.length()>6)
{
System.out.println("*****你输入的注册用户名长度超过六位,请重新注册*****");
continue;
} System.out.print("请输入注册的密码(长度不能超过六位):");
String userRegistePassword = sc.next();
if(userRegistePassword.length()>6)
{
System.out.println("*****你输入的注册密码长度超过六位,请重新注册*****");
continue;
}
System.out.print("请输入对此帐户的存款:");
double userRegisteBalance = sc.nextDouble();
if(Double.isNaN(userRegisteBalance))
{
System.out.println("*****你输入的存款不是数字类型,请重新注册*****");
continue;
}
System.out.println();
System.out.println("-----恭喜你注册成功!-----");
System.out.println();
while(true)
{
System.out.print("你还想继续注册么?Y/N ");
Scanner scStr = new Scanner(System.in);
String str = scStr.next();
if(str.equals("y")||str.equals("Y"))
{
break;
}else if(str.equals("n")||str.equals("N"))
{
System.out.println("谢谢你的参与!");
System.out.println();
break ;
}else{
System.out.println("你的输入有误!请重新输入:");
}
} }
我自己也解决了,呵
把“nextLine”改为“next”就可以了public String next()
查找并返回来自此扫描器的下一个完整标记。完整标记的前后是与分隔模式匹配的输入信息。即使以前调用 hasNext() 返回了 true,在等待要扫描的输入时此方法也可能阻塞。public String nextLine()
此扫描器执行当前行,并返回跳过的输入信息。 此方法返回当前行的其余部分,不包括结尾处的行分隔符。当前位置移至下一行的行首。
因为此方法会继续在输入信息中查找行分隔符,所以如果没有行分隔符,它可能会缓冲所有输入信息,并查找要跳过的行。 跟大家也分享一下