java中scanner输入问题

img


我的目的是定义一个char类型,然后输入一个字符,判断与Y或N是否相等,我用int类型输入强制转换成char会报错,用next或者nextline又报错如何解决

可以在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;
        
    }

}

img

你这代码问题多了
1.nextline取到的是个字符串,你不能把字符串赋值给字符
2.你把close写进for循环里面了
3.你把值赋值给i和i+1,那么i++之后,继续赋值的时候你的姓名把上次输入的密码给覆盖了