A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

代码如下:

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之间呢?
这个问题我要怎么解决啊?

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

6 个回复

倒序浏览
本帖最后由 赵玮_Tom 于 2012-5-11 17:37 编辑

在转型的时候,不应该转为int类型,应该转为char类型。你转成int类型,输出的是该数字对应的ASCII码值,这正是你输出的数字都在49-57之间的原因(确切的说,应该是48-57之间)。

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));//你输入4的时候是一个字符型的4
                 int b=(int)bufr.read();//这里把一个字符型的数据强制转换成int 也就是对应的ASCII 值
                 System.out.println(b);//现在这里明白了吗
                 

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
李啸 发表于 2012-5-11 17:19
BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));//你输入4的时候是一个字符型 ...

那我怎样做才是我输入的是4,输出的也是4呢?
或者还有其它办法吗?
回复 使用道具 举报
李月 发表于 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());//
回复 使用道具 举报
BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));//你输入4的时候是一个字符型的4
                 int b=(int)bufr.read();//这里把一个字符型的数据强制转换成int 也就是对应的Unicod 值
回复 使用道具 举报
杨鹏 中级黑马 2012-5-11 18:36:00
7#
至于输入4的时候,打印的结果是52的原因楼上已经给出正解。我现在要说的是另外一种实现方式。可以使用BufferedReader中的readLine()方法实现你所要的功能。代码可以如下:               
String b=bufr.readLine();      //因为输入一个数字是要按回车的,所以使用该方法实现个人觉得比较方便
System.out.println(b);         //
                 
sort(a,Integer.parseInt(b));   //将输入的数字转换为Integer类型再调用函数   其他代码不变
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马