为什么输入完用户名后的代码不执行了?

微凉风又起 2018-02-12 08:52:24

public class Landing { //管理员注册
public void land() {
String[] userName = new String [999];//定义一个数组保存 用户名
int[] passWord = new int [999];//定义一个数组保存密码

while(true) {
Scanner input = new Scanner(System.in);
int i = 0;
boolean flag = true;
while(flag) {
System.out.println("请填写用户名");
userName[i]= input.next();

for(int j=0; j<userName.length;j++) {
if(input.next().equals(userName[i])) {
System.out.println("用户名已存在!请重新输入");

break;
}
}
flag = false;
}
System.out.println("请填写密码");
try { //捕获异常
passWord[i]=input.nextInt();
System.out.println("注册成功");
break;
}
catch(Exception e) {
System.out.println("密码格式不正确,请输入数字!");
}
}
}
}
...全文
1201 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
无聊的上午 2018-02-13
  • 打赏
  • 举报
回复
你后面代码没看 还有BUG package td; import java.util.Scanner; public class Test2 { public void land() { String[] userName = new String [999];//定义一个数组保存 用户名 int[] passWord = new int [999];//定义一个数组保存密码 System.out.println(userName.length); while(true) { Scanner input = new Scanner(System.in); int i = 0; boolean flag = true; while(flag) { System.out.println("请填写用户名"); userName[i]= input.next(); while(true) { System.out.println("请输入用户名"); String newUserNm = input.next(); if(userName[i].equals(newUserNm)) { System.out.println("用户名已存在!请重新输入"); continue; }else { userName[i+1] = newUserNm; i++; break; } } flag = false; } System.out.println("请填写密码"); try { //捕获异常 passWord[i]=input.nextInt(); System.out.println("注册成功"); break; }catch(Exception e) { System.out.println("密码格式不正确,请输入数字!"); } } } public static void main(String[] args) { new Test2().land(); } } 再给你改改
无聊的上午 2018-02-13
  • 打赏
  • 举报
回复
引用 4 楼 gansiwei 的回复:

import java.util.Scanner;
import java.io.*;
public class Landing {  //管理员注册
public  static void main(String[] args) {
String[] userName = new String [1];//定义一个数组保存 用户名---你定义是999个要输入999次才进行下一步,现在改成1后输入2次就进行下一步了
int[] passWord = new int [1];//定义一个数组保存密码

while(true) {
Scanner input = new Scanner(System.in);
int i = 0;
boolean flag = true;
while(flag) {
System.out.println("请填写用户名");  
userName[i]= input.next();

for(int j=0; j<userName.length;j++) {
if(input.next().equals(userName[i])) {
System.out.println("用户名已存在!请重新输入");
 
break;
}
}
flag = false;
}
System.out.println("请填写密码");
try {  //捕获异常
passWord[i]=input.nextInt();
System.out.println("注册成功");
break;
}
catch(Exception e) {
System.out.println("密码格式不正确,请输入数字!");	
}
}	
}
}

不知道你自己测试过他代码没,估计没有,还真不用999次,因为他的i没自增,永远都是0
天空海阔66 2018-02-13
  • 打赏
  • 举报
回复

import java.util.Scanner;
import java.io.*;
public class Landing {  //管理员注册
public  static void main(String[] args) {
String[] userName = new String [1];//定义一个数组保存 用户名---你定义是999个要输入999次才进行下一步,现在改成1后输入2次就进行下一步了
int[] passWord = new int [1];//定义一个数组保存密码

while(true) {
Scanner input = new Scanner(System.in);
int i = 0;
boolean flag = true;
while(flag) {
System.out.println("请填写用户名");  
userName[i]= input.next();

for(int j=0; j<userName.length;j++) {
if(input.next().equals(userName[i])) {
System.out.println("用户名已存在!请重新输入");
 
break;
}
}
flag = false;
}
System.out.println("请填写密码");
try {  //捕获异常
passWord[i]=input.nextInt();
System.out.println("注册成功");
break;
}
catch(Exception e) {
System.out.println("密码格式不正确,请输入数字!");	
}
}	
}
}

无聊的上午 2018-02-13
  • 打赏
  • 举报
回复
然后教你个东西,你应该才接触,后面你应该能接触到集合,这边我就不用集合,还是用数组,Arrays.copyOf(oldArray,newLength) 数组的扩容和缩容的方法,参数是被操作数组和该数组要达到的新长度
无聊的上午 2018-02-13
  • 打赏
  • 举报
回复
引用 1 楼 qq_35470953 的回复:
你这注册 好复杂 i值没递增 一直都是0 不是没执行,而是你第二次输出前没提示 在你的基础给你改了下 package td; import java.util.Scanner; public class Test2 { public void land() { String[] userName = new String [999];//定义一个数组保存 用户名 int[] passWord = new int [999];//定义一个数组保存密码 while(true) { Scanner input = new Scanner(System.in); int i = 0; boolean flag = true; while(flag) { System.out.println("请填写用户名"); if(userName.length<=0) { userName[i]= input.next(); }else { for(int j=0; j<userName.length;j++) { System.out.println("请输入用户名"); String newUserNm = input.next(); if(userName[i].equals(newUserNm)) { System.out.println("用户名已存在!请重新输入"); break; }else { userName[i+1] = newUserNm; i++; } } } flag = false; } System.out.println("请填写密码"); try { //捕获异常 passWord[i]=input.nextInt(); System.out.println("注册成功"); break; }catch(Exception e) { System.out.println("密码格式不正确,请输入数字!"); } } } public static void main(String[] args) { new Test2().land(); } } 淡然这种做法不是最简
改一下 有BUG
无聊的上午 2018-02-13
  • 打赏
  • 举报
回复
你这注册 好复杂 i值没递增 一直都是0 不是没执行,而是你第二次输出前没提示 在你的基础给你改了下 package td; import java.util.Scanner; public class Test2 { public void land() { String[] userName = new String [999];//定义一个数组保存 用户名 int[] passWord = new int [999];//定义一个数组保存密码 while(true) { Scanner input = new Scanner(System.in); int i = 0; boolean flag = true; while(flag) { System.out.println("请填写用户名"); if(userName.length<=0) { userName[i]= input.next(); }else { for(int j=0; j<userName.length;j++) { System.out.println("请输入用户名"); String newUserNm = input.next(); if(userName[i].equals(newUserNm)) { System.out.println("用户名已存在!请重新输入"); break; }else { userName[userName.length-1] = newUserNm; } } } flag = false; } System.out.println("请填写密码"); try { //捕获异常 passWord[i]=input.nextInt(); System.out.println("注册成功"); break; }catch(Exception e) { System.out.println("密码格式不正确,请输入数字!"); } } } public static void main(String[] args) { new Test2().land(); } } 淡然这种做法不是最简

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧