题解 | #截取字符串#

截取字符串

http://www.nowcoder.com/practice/a30bbc1a0aca4c27b86dd88868de4a4a

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String input = null;
        String output = null;
        int end=0;
        String tmp=null;
        while (in.hasNext()) { 
            input=in.nextLine();
            //end = in.nextInt();
            //此处不能使用nextInt方法,迭代器后移一位会导致下次运行时出现类型转换失败或者空指针异常
            tmp = in.nextLine();
            end=Integer.valueOf(tmp);
            output=input.substring(0,end);
            System.out.println(output);
        }
    }
}

先上代码.本来是个比较简单的切分字符串的题目,使用nextInt方法第一次没问题,但是这个方***导致迭代器后移一位,下次运行时出现类型转换失败或者空指针异常.笔者使用了nextLine读取,然后使用包装类Integer.valueOf方法转换回int类型,使用substring方法即可切分成功.

全部评论
读取字符串使用sc.next()+sc.nextInt(),可以正常通过
1 回复
分享
发布于 2022-01-02 15:57
我也出现了这个问题,但是为什么会出现迭代器后移一位导致输入不匹配异常呢? 第一次运行成功,第二次就失败
点赞 回复
分享
发布于 2022-07-02 18:01
滴滴
校招火热招聘中
官网直投
即使是循环读取,可以在nextInt()后加一个nextLine()将回车吃掉即可正常运行
点赞 回复
分享
发布于 2023-09-09 12:42 广东

相关推荐

点赞 评论 收藏
转发
6 收藏 评论
分享
牛客网
牛客企业服务