LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1576|回复: 9

一个JAVA小程序,请看看为何实现不了。

[复制链接]
发表于 2005-12-8 19:47:08 | 显示全部楼层 |阅读模式
import java.io.*;                        
                                          
  public class showCharValue               
  {                                       
  public static void main(String arge[])   
  {                                       
    char ch;                              

    try                                               
   {
     System.out.println("请输入一个字符,以'#'结束");
     do                                             
     {
       ch = (char)System.in.read();                  
       System.out.println("字符"+ch+"的整数值为"+(int)ch);
       System.in.skip(2);                           
     }while(ch!='#');                              
   }                                                
   catch(IOException e)                              
   {
     System.err.println(e.toString());               
   }
}                                               
}                                             
为什么实现不了循环呢?
发表于 2005-12-9 05:09:51 | 显示全部楼层
do while 循环一点问题没有,但是楼主要实现什么没看懂?
回复 支持 反对

使用道具 举报

发表于 2005-12-9 08:58:44 | 显示全部楼层
我运行了,是在循环啊1!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-10 19:40:51 | 显示全部楼层
我的目的是接受用户输入的字符并输出其整型数值,以“#”表示程序的结束。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-10 19:46:14 | 显示全部楼层
Post by fangshun
我运行了,是在循环啊1!

不知仁兄在何平台,我是在LINUX下,输入出一个字符后便出现:
[root@DYS ~]# java showCharValue
请输入一个字符,以'#'结束
a
字符a的整数值为97
java.io.IOException: 非法 seek 操作
[root@DYS ~]# java showCharValue
请输入一个字符,以'#'结束
t
字符t的整数值为116
java.io.IOException: 非法 seek 操作
[root@DYS ~]#

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2005-12-10 22:44:11 | 显示全部楼层
没错啊。不过输入中文字符就有问题。楼主的console的locale是什么?
wuzuyang@debian:~$ java showCharValue
请输入一个字符,以'#'结束
123#
字符1的整数值为49
字符#的整数值为35
wuzuyang@debian:~$ java showCharValue
请输入一个字符,以'#'结束

字符å的整数值为229
字符
的整数值为10
java.io.IOException: Illegal seek
回复 支持 反对

使用道具 举报

发表于 2005-12-10 23:05:02 | 显示全部楼层
没有什么报警,我是JDK1。5
请输入一个字符,以'#'结束
a
字符a的整数值为97
a#
字符a的整数值为97
a#
字符a的整数值为97
A
字符A的整数值为65
#
字符#的整数值为35

请输入一个字符,以'#'结束

字符?的整数值为206

字符°的整数值为176

字符?的整数值为196
#
字符#的整数值为35
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-10 23:11:02 | 显示全部楼层
"console的locale"小弟不知是什么意思。
也许我没表达清楚,我的目的是每次输入一个字符后输出该字符的整数值,接着又要求输入一个字符,又输出整数值,直到输入了“#”,则程序结束。
回复 支持 反对

使用道具 举报

发表于 2005-12-11 17:30:46 | 显示全部楼层
避免直接用System.in.read(); 这样用是字节,例如输入“我”就显示半个字符,Java核心的字符是基于UNICODE:


  1. import java.io.*;

  2. public class CharToInt {
  3.         public static void main(String[] args) throws IOException {
  4.                 int input;
  5.                 BufferedReader stdin;
  6.                 System.out.println("请输入一个字符,以'#'结束");
  7.                 do {
  8.                         stdin = new BufferedReader(new InputStreamReader(System.in));
  9.                         input = stdin.read();
  10.                         System.out.println("字符" + (char) input + "的整数值为" + input);
  11.                 } while ((char) input != '#');
  12.         }
  13. }
复制代码


不知道unicode请参考:
Java中文处理学习笔记——Hello Unicode
http://www.chedong.com/tech/hello_unicode.html
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-11 21:01:09 | 显示全部楼层
我再试了试,也许其它方面有问题,但我找到了主要的问题, System.in.skip(2);此句,我注释掉之后就没问题了.可以循环了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表