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(),问题解决。

猜你喜欢

转载自www.cnblogs.com/tiny-me/p/11767749.html