关于windows下的Enter键

     昨天遇到一个小小的问题,我被困扰了很久,问题虽小,不解决的话却始终坐立不安哪。其实问题很简单,就是关于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);

        }
    }
}

 

posted @ 2012-11-08 09:59  笑rpp  阅读(1437)  评论(0编辑  收藏  举报