利用System.in.read() 函数从键盘读入一系列字符

Q:从键盘读入一系列字符,用System.in.read() 函数来实现,要求输出所读入的字符,直到读入字符‘q’时结束。用while与do-while语句分别实现。


/**
 * Created by Sfwn on 2015/9/11.
 */

import java.io.IOException;
import java.io.InputStream;

public class Test_02 {
    private static InputStream in;
    static {
        in = System.in;
    }

    public static void getChar_while() throws IOException {
        /*每执行一次指针会向后移一个byte
        所以要用input变量来保存读取到的值
        返回的是int值,故用printf指定格式为"%c"*/
        int input = in.read();
        if(input == '\n') {
            input = in.read();
        }
        while(input != 'q') {
            System.out.printf("%c", input);
            input = in.read();
        }
    }

    public static void getChar_doWhile() throws IOException {
        int input = in.read();
        if(input == '\n') {
            input = in.read();
        }
        do {
            System.out.printf("%c", input);
            input = in.read();
        } while(input != 'q');
    }

    public static void main(String[] args) throws IOException {
        System.out.println("Select the method:\n  1.while \n  2.do while");
        int panduan = System.in.read();
        if(panduan == '1') {
            System.out.println("Please input char or String:");
            getChar_while();
        } else if(panduan == '2'){
            System.out.println("Please input char or String:");
            getChar_doWhile();
        }
    }
}

注意:

1.System.in.read()读取的是字节流,即ASCII码

eg:

if(panduan == '1')   // 可以写成 if(panduan == 49) , 1 的 ASCII码为 49

2.'回车' 也在字节流中,

if(input == '\n') {
            input = in.read();
        }
用上面的代码跳过回车字符,指向下一个实际要取的字符

if(panduan == '1')   // 可以写成 if(panduan == 49) , 1 的 ASCII码为 49
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值