import java.io.*;
public class A
{
public static void main(String []args) throws Exception
{ InputStreamReader reader = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(reader); //String data; int data;

data = br.read(); System.out.println(data*data);
 }
}
为什么会有这样结果:
D:\>java A
10
2401
本应用是10*10 要为100才对啊.上面程序错了哪啊? br.read()返回的整数啊

解决方案 »

  1.   

    read是读取的单个字符,用readLine,完后把得到的字符串用Integer.parseInt转化为整数,再乘
      

  2.   

    read()读到的是一个字符.
    你输入10读到是'1'.
    '1'*'1'=49*49=2401 //'1'的ASCII码和Unicode都是49
      

  3.   

    考大家一个问题,如果把
    System.out.println(data*data);中的data*data先取出来,
    例1:
    int count=data*data;
    System.out.println(count);
    这样会是什么情况?这样程序有没有问题呢?考考初学的,高手就见笑了
      

  4.   

    br.read(); 得到的值是不会自动按类型转换的!
      

  5.   

    输入的是单个字符,所以就不行了,可以用readLine(),还要类型转换为int型的~~~
      

  6.   

    问题是出现在:int data; data = br.read(); System.out.println(data*data); 
    ---------------------------------------------这里br 读取的是字符,你的程序就变为了把键盘敲进的字符的ASCI码给平方了.
    所以出现与预计不同的答案
      

  7.   

    因此,楼主的代码, 应修改成下列样子,方能得到 100 的结果。
    import java.io.*; 
    public class A { 
    public static void main(String []args) throws Exception { 
    InputStreamReader reader = new InputStreamReader(System.in); 
    BufferedReader br = new BufferedReader(reader); 
    int data; 
    data =Integer.parseInt( br.readLine()); 
    System.out.println(data*data); 


      

  8.   

    read()读到的是一个字符.
    你输入10读到是'1'.
    '1'*'1'=49*49=2401 //'1'的ASCII码和Unicode都是49