本帖最后由 zhiyi 于 2015-1-14 08:53 编辑
做了一个练习题,在主函数中调用toHanzi(),为什么只调用一次没事儿,调用两次,或更多就不行了呢?还有传数字没事(也是一次性),一传其他字符就挂, - public class Test {
-
- public static void main(String[] args)
- {
- String testStr= toHanzi();
- //打印提示语句,可以使程序更友好易用
- if(testStr.equalsIgnoreCase("INPUTERR") )
- {
- testStr= toHanzi();
- System.out.println("输入有误,请重试\n");
- }
-
- System.out.print("转换结果为\n"+testStr);
- }
- }
复制代码 //创建一个函数,实现此功能,返回转换好的字符串 - static String toHanzi()
- {
- //定义输入流
- BufferedReader putIn=new BufferedReader(new InputStreamReader(System.in));
- //定义一个临时Sting变量,用于收.readLine()函数返回的字符串
- String temString=null;
- try
- {
- //从键盘读取字符串
- temString=putIn.readLine();
- }
- catch(IOException e)
- {
- throw new RuntimeException("从键盘读取数据失败");
- }
- finally
- {
- //当读取数据失败时,必须关闭输入流
- try
- {
- putIn.close();
- }
- catch(IOException e)
- {
- throw new RuntimeException("输入流关闭失败");
- }
- }
- //接受到的将字符串转为字符元素,并存入字符数组arr[]
- char [] arr=temString.toCharArray();
- char[] table={'零','一','二','三','四','五','六','七','八','九'};
- StringBuilder result=new StringBuilder();
- //对获得的字符数组进行转换
- for(int i=0,t=0;i<arr.length;i++)
- {
- t=arr[i];
- //对字符的合法性进行判断,所输入字符必须是0~9的数字
- if(t<'0'||t>'9')
- return "INPUTERR";
- result.append(table[t-'0']);
- }
-
- return result.toString();
- }
- }
复制代码
显示这个 此函数的功能是将您从键盘输入的数字转换为中文格式。 请输入数字 gghjjj Exception in thread "main" java.lang.RuntimeException: 从键盘读取数据失败 at com.itheima.Test4.toHanzi(Test4.java:52) at com.itheima.Test4.main(Test4.java:31)
|