解决eclipse控制台不能正常输入问题的心路历程
问题现象:
今天想把在个人电脑上可正常运行的Java代码在公司的电脑上继续写其他功能,新建了类之后直接将代码复制过去,检查没有任何错误后运行程序,但程序却在最初的Scanner控制台输入数据时就没办法正常输入,即输入数字控制台不显示,程序也没办法继续运行…
代码块:
Scanner input = new Scanner(System.in);
System.out.println("请选择电影序号:");
int choose = input.nextInt();
Movie currentMovie = movies.get(choose - 1);
System.out.println("你选择了:" + movies.get(choose - 1).getName());
现象展示:
可以看到程序是在运行中的,但是鼠标的位置没有任何显示,有时候连续输入之后会突然显示出来,但是程序依然不能继续运行…
(可能聪明的你已经发现问题所在了,原谅这时候我还没看出来TT)
心路历程:
→
表示很懵,明明在自己电脑上运行没有任何问题…
→
肉眼检查了下代码没发现任何问题,尝试使用DEBUG调试,无果…
→
然后在暴力操作了一波之后发现程序莫名奇妙自己好了,没有改动任何地方,这个时候我觉得 emmm可能是神秘的东方力量吧…
→
不死心的我,很想探究一下这神秘的力量。。于是我把eclipse客户端关闭,又重新打开,嗯,果然程序又不行了…
→
在网上搜索了一通后,发现有一个说法比较靠谱:
“ 这是Eclipse软件中的输入bug,
就是当你在拼音输入法的情况下,输入的鼠标光标没有在要输入的位置上,
输入汉字时,就会出现刚才的情况,导致没法再次输入,
只要在输入的时候,将光标放在您要输入的位置,然后在输入就好了,
这个bug 只会在输入汉字时才会出现 ”
→
于是我检查了自己的环境发现:
1、虽然我不是要输入汉字,但确实我的控制台默认输入法是中文的;
2、我的上一行输出语句使用的是println,那么该行输出后,下一行才应该是控制台要输入的位置,但是我实际却直接将鼠标放到了该行的文字后面。
→
为了验证这个想法,我进行了如下测试:
1、运行程序前将输入法调为英文,再运行程序。
结果:程序可以正常运行,无论我是否手动移动光标所在位置,都可以正常输入。
光标默认在此处时直接输入:
输入正常:
手动将光标移动到错误位置
输入正常:
2、输入法为中文的情况下,将鼠标移动到正确位置。
输入正常,程序正常运行:
3、输入法为中文的情况下,修改上一条语句输出为print函数。
System.out.print("请选择电影序号:");
将光标移动到上一行文字后输入,程序正常运行:
以上,验证了上面的说法,3种方法也都可以解决我的问题。
我的总结:
1、在不需要输入中文的情况下,控制台最好默认为英文输入法。
2、注意print和println函数的不同之处。
很有趣。