猿问

令人蛋疼的Scanner类

不得不承认Scanner类对英文输入支持是非常好的!但是针对中文输入,Scanner的传说中的阻塞问题就出来了!
请看下面的小程序:
import java.util.Scanner;

public class Test {

public static void main(String [] args) {
    new Test().start();
}

public void start() {
    Scanner sc = new Scanner(System.in);
    while(true) {
        System.out.println("请输入用户名:");
        String name = sc.next();
        System.out.println("name = " + name);
        System.out.println("继续输入吗?(y/n)");
        String sure = sc.next();
        if(sure.equals("y")) {
            continue;
        } else {
            sc.close();
            return;
        }
    }
}

}

请复制运行,然后到判断继续输入吗?(y/n)的时候,一定要继续用搜狗输入法,并且不要切换到英文输入模式下就会看到如图所示的情况下,一直卡死。
我想这肯定是next()方法里面的readInput()方法导致的!
可是,这怎么解决呢?如果这样接受输入的话,势必影响用户的心情!

请恕小弟愚昧,实在找不到解决之法,请指教!


撒科打诨
浏览 464回答 2
2回答

慕妹3242003

在Scanner中要输入字符串的话是要用Scanner.nextline()方法的,表示接受字符串
随时随地看视频慕课网APP

相关分类

Java
我要回答