今天遇到一个面试题,描述如下:
计算字符串最后一个单词的长度,单词以空格隔开。
其实很简单:
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(),问题解决。