G帅T 2023-03-13 07:19 采纳率: 76%
浏览 45
已结题

java中scanner输入问题

img


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

  • 写回答

3条回答 默认 最新

  • a5156520 2023-03-13 09:33
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月21日
  • 已采纳回答 3月13日
  • 创建了问题 3月13日

悬赏问题

  • ¥15 关于模型训练的一个问题
  • ¥15 装了几千台服务器从来没遇到这种问题,哎看下哪位帮我解决吧
  • ¥15 单片机程序上的困难问题
  • ¥15 请教某软件缓存Ts文件破解合并mp4的方法
  • ¥15 求小游戏炸弹人中关于敌人的C++代码
  • ¥15 拿到这个服务器最高权限有偿
  • ¥50 来个抓app跳转支付宝转链接的
  • ¥15 remotes安装提示没有description文件
  • ¥15 AttributeError: 'NoneType' object has no attribute 'drop_duplicates'报错
  • ¥15 以下代码,运行结果报错