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日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度