答案程序如下:
import java.io.*;
public class Apple{
public static void main(String args[]){
char ch[]=new char[40]; //定义个一个字符数组,用来存放获取的字符
System.out.println("请输入一串字符:");
try{
BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));
buffer.read(ch,1,39); //将字符读入数组的某一部分
System.out.println("翻转后如下:");
for(int i=39;i>0;i--){
System.out.print(ch[i]);
}
System.out.println("");
}catch(IOException e){
e.printStackTrace();
}
}
}
***********************************************************
从Java角度看,本人认为解决方法仅此一种,关键在public int read(char[] cbuf,int off, int len)方法的使用!
API对此方法的介绍如下:
public int read(char[] cbuf, int off, int len) throws IOException
此方法实现
类相应 Reader
方法的常规协定。另一个便捷之处在于,它将通过重复地调用底层流的 read
read
方法,尝试读取尽可能多的字符。这种迭代的 read
会一直继续下去,直到满足以下条件之一:
read
方法返回 -1
,指示文件末尾(end-of-file),或者 ready
方法返回 false
,指示将阻塞后续的输入请求。 read
返回
-1
(指示文件末尾),则此方法返回
-1
。否则此方法返回实际读取的字符数。
鼓励(但不是必须)此类的各个子类以相同的方式尝试读取尽可能多的字符。
一般来说,此方法从此流的字符缓冲区中获得字符,根据需要从底层流中填充缓冲区。但是,如果缓冲区为空、标记无效,并且所请求的长度至少与缓冲区相同,则此方法将直接从底层流中将字符读取到给定的数组中。因此多余的 BufferedReader
将不必复制数据。
Reader
中的
read
cbuf
- 目标缓冲区
off
- 开始存储字符处的偏移量
len
- 要读取的最大字符数
IOException
- 如果发生 I/O 错误