您的位置:首页 > 编程语言 > Java开发

关于一道J笔试或者机试题的Java实现:从键盘输入一串字符,翻转后输出(要求不使用string相关类即对象)

2011-09-24 14:37 1111 查看
答案程序如下:

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对此方法的介绍如下:

read

public int read(char[] cbuf,
int off,
int len)
throws IOException

将字符读入数组的某一部分。
此方法实现
Reader
类相应
, int, int)]
read
方法的常规协定。另一个便捷之处在于,它将通过重复地调用底层流的
read
方法,尝试读取尽可能多的字符。这种迭代的
read
会一直继续下去,直到满足以下条件之一:

已经读取了指定的字符数,

底层流的
read
方法返回
-1
,指示文件末尾(end-of-file),或者

底层流的
ready
方法返回
false
,指示将阻塞后续的输入请求。

如果第一次对底层流调用
read
返回
-1
(指示文件末尾),则此方法返回
-1
。否则此方法返回实际读取的字符数。
鼓励(但不是必须)此类的各个子类以相同的方式尝试读取尽可能多的字符。

一般来说,此方法从此流的字符缓冲区中获得字符,根据需要从底层流中填充缓冲区。但是,如果缓冲区为空、标记无效,并且所请求的长度至少与缓冲区相同,则此方法将直接从底层流中将字符读取到给定的数组中。因此多余的
BufferedReader
将不必复制数据。

指定者:
Reader
中的
, int, int)]read
参数:
cbuf
- 目标缓冲区
off
- 开始存储字符处的偏移量
len
- 要读取的最大字符数 返回: 读取的字符数,如果已到达流末尾,则返回 -1 抛出:
IOException
- 如果发生 I/O 错误
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐