可以在next()后面增加一个charAt(0)获取输入的第一个字符即可,另外如果需要向其他方法传递注册信息,可以把存放注册信息的String数组放在main方法,然后向其他方法传递这个String数组和可以当前可以存储注册信息的下标。
修改如下:
参考链接:
import java.util.Scanner;
public class RegisterTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
String [] h = new String[100];
// 第一次注册,传入h数组,当前可以存储注册信息的下标len=0
int len=0;
int newLen=register(h,len); // 使用newLen存放最新可以存储注册信息的下标,以便后面打印和再次注册
//System.out.println("newLen="+newLen);
System.out.println("注册信息为:");
for(int i=0;i<newLen;i+=2) {
System.out.println("姓名:"+h[i]+",密码:"+h[i+1]);
}
// 第二次注册,传入h数组,当前可以存储注册信息的下标newLen,并再次获取返回的可以存储注册信息的下标,以便后面打印
newLen=register(h,newLen);
//System.out.println("newLen="+newLen);
System.out.println("注册信息为:");
for(int i=0;i<newLen;i+=2) {
System.out.println("姓名:"+h[i]+",密码:"+h[i+1]);
}
}
public static int register(String[] h,int len) {
int i=len;
//System.out.println("i="+i);
Scanner sc = new Scanner(System.in);
while(i<h.length-1) {
System.out.println("姓名:");
h[i] = sc.next();
System.out.println("密码:");
h[i+1]=sc.next();
System.out.println("是否继续注册?Y/N");
char m ;
// https://blog.csdn.net/weixin_62079735/article/details/128920895
m = sc.next().charAt(0);
i+=2;
// System.out.println("i="+i);
// System.out.println("m="+m);
if(m=='Y') {
continue;
}else {
///= sc.close();
// System.out.println("i-2="+(i-2));
return i;
}
}
//sc.close();
return i;
}
}
你这代码问题多了
1.nextline取到的是个字符串,你不能把字符串赋值给字符
2.你把close写进for循环里面了
3.你把值赋值给i和i+1,那么i++之后,继续赋值的时候你的姓名把上次输入的密码给覆盖了