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