Java控制台输入字符串问题


今天遇到一个面试题,描述如下:

计算字符串最后一个单词的长度,单词以空格隔开。

其实很简单:

import java.util.Scanner;
public class Main {
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        System.out.println(getLastWordLen(scan.next()));
    }
    public static int getLastWordLen(String str){
        int i = str.lastIndexOf(" ")+1;
        String lastWord = str.substring(i);
        return lastWord.length();
    }
}

but.....,测试一下发现并不对。随便输入一个“123 12”,结果应该是2,实际却输出3,百思不得姐,一度查看lastIndexOf源码,依然不明白咋回事。最后发现问题出在scan.next(),这个方法不支持控制台输入带有空格的字符串,例如输入“123 12”,实际上只能接收到“123”,空格后面的被截掉了,改成scan.nextLine(),问题解决。

 

控制台输入再入新坑

System.out.println(scan.next())  ;

System.out.println(scan.nextLine())  ;

这样写,我觉得人畜无伤,实际上第一次输入完成后,还没等我再次输入,就结束了。

盗用人家的成果https://blog.csdn.net/superme_yong/article/details/80543995。nextLine()换成nextInt()也不行,所以还是尽量用同一种next方法吧。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM