昨天遇到一个小小的问题,我被困扰了很久,问题虽小,不解决的话却始终坐立不安哪。其实问题很简单,就是关于java中Enter键的处理。因为没有很好的理解,所以有些问题始终解决不了。现在终于想通了,哦也~
关于Windows键盘上的Enter键,Windows用2个操作符来控制Enter键,即 \r\n
0x0D(asc码是13) 指的是“回车” \r是把光标置于本行行首
0x0A(asc码是10) 指的是“换行” \n是把光标置于下一行的同一列
0x0D + 0x0A 回车换行 \r\n把光标置于下一行行首
现在理解了么?看看下面这个题目,你能找出错误并改正就证明你理解了嘿嘿
题目:
将键盘上的一个数字序列号的每位数字存储在Vector对象中,然后在屏幕上打印出每位数字想要的结果,可以循环输入 例如,输入32,打印出5;再输入1234,打印出10;输入0,打印出0
错误代码段:
import java.util.*; public class TestVector { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Vector v = new Vector(); System.out.println("please enter numbers:"); int b = 0; while (true) { while (true) { try { b = System.in.read(); } catch (Exception e) { e.printStackTrace(); } if (b == '\r' || b == '\n') break; else { int num = b - '0'; v.addElement(new Integer(num)); } } int sum = 0; Enumeration e = v.elements();// 枚举 while (e.hasMoreElements())// 测试此枚举是否包含更多的元素。 { Integer intObj = (Integer) e.nextElement(); sum += intObj.intValue(); } v.removeAllElements(); System.out.println(sum); } } }
修正后的代码段:只要加一个if语句即可
import java.util.*; public class TestVector { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Vector v = new Vector(); System.out.println("please enter numbers:"); int b = 0; while (true) { while (true) { try { b = System.in.read(); } catch (Exception e) { e.printStackTrace(); } if (b == '\r' || b == '\n') break; else { int num = b - '0'; v.addElement(new Integer(num)); } } int sum = 0; Enumeration e = v.elements();// 枚举 while (e.hasMoreElements())// 测试此枚举是否包含更多的元素。 { Integer intObj = (Integer) e.nextElement(); sum += intObj.intValue(); } if (sum == 0 && v.isEmpty()) //这里就是控制不多输出0的if语句 continue; v.removeAllElements(); System.out.println(sum); } } }