黑马程序员技术交流社区

标题: 我写的小程序,出现的结果不是我想要的,请帮忙解决一... [打印本页]

作者: 李月    时间: 2012-5-11 17:09
标题: 我写的小程序,出现的结果不是我想要的,请帮忙解决一...
代码如下:

import java.io.BufferedReader;

import java.io.InputStreamReader;

public class RandomSort {

        /**
         * @param args
         */
        public static void main(String[] args) throws Exception{
                // TODO Auto-generated method stub
                System.out.println("请输入一个数字");
            int a=(int)(Math.random()*100);
               
               
                BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));//当我输入4的时候。为什么下面打印的结果是52.???
                int b=(int)bufr.read();//这里我转换了啊????
                System.out.println(b);//这里打印52.???????
               
               
                sort(a,b);
               
        }
        public static void sort(int a,int b)
        {
                if(a>b)
                        System.out.println("随机产生的"+a+"大于"+"您输入的数字"+b);
                else if(a==b)
                        System.out.println("随机产生的"+a+"等于"+"您输入的数字"+b);
                else
                        System.out.println("随机产生的"+a+"小于"+"您输入的数字"+b);
                               
        }


}

还有一个问题,为什么我输入什么数字,都是在49~57之间呢?
这个问题我要怎么解决啊?


作者: 赵玮_Tom    时间: 2012-5-11 17:14
本帖最后由 赵玮_Tom 于 2012-5-11 17:37 编辑

在转型的时候,不应该转为int类型,应该转为char类型。你转成int类型,输出的是该数字对应的ASCII码值,这正是你输出的数字都在49-57之间的原因(确切的说,应该是48-57之间)。
作者: 李啸    时间: 2012-5-11 17:19
BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));//你输入4的时候是一个字符型的4
                 int b=(int)bufr.read();//这里把一个字符型的数据强制转换成int 也就是对应的ASCII 值
                 System.out.println(b);//现在这里明白了吗
                 

作者: 李月    时间: 2012-5-11 17:23
李啸 发表于 2012-5-11 17:19
BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));//你输入4的时候是一个字符型 ...

那我怎样做才是我输入的是4,输出的也是4呢?
或者还有其它办法吗?
作者: 李啸    时间: 2012-5-11 17:28
李月 发表于 2012-5-11 17:23
那我怎样做才是我输入的是4,输出的也是4呢?
或者还有其它办法吗?

BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));//
       // byte b=(byte)bufr.read();//
        System.out.println((char)bufr.read());//
作者: 黄坚声    时间: 2012-5-11 17:31
BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));//你输入4的时候是一个字符型的4
                 int b=(int)bufr.read();//这里把一个字符型的数据强制转换成int 也就是对应的Unicod 值

作者: 杨鹏    时间: 2012-5-11 18:36
至于输入4的时候,打印的结果是52的原因楼上已经给出正解。我现在要说的是另外一种实现方式。可以使用BufferedReader中的readLine()方法实现你所要的功能。代码可以如下:               
String b=bufr.readLine();      //因为输入一个数字是要按回车的,所以使用该方法实现个人觉得比较方便
System.out.println(b);         //
                 
sort(a,Integer.parseInt(b));   //将输入的数字转换为Integer类型再调用函数   其他代码不变




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2