import java.BufferedReader;
import java.InputStreamReader; 
import java.IOException;
public class Point {
  
   private double x;
   private double y;
   private double z;
  
  Point (double a, double b, double c) {
    
    x=a; 
    y=b; 
    z=c;
  }
  
  public void setX (double q) {
     
    x=q; 
  } 
  
  public void setY (double w) {
    
    y=w;
  }
  
  public void setZ (double e) {    z=e;
  }  
  public double distance (Point p) {
    
    return (x-p.x)*(x-p.x)+(y-p.y)*(y-p.y)+(z-p.z)*(z-p.z);
    
  }
  
  public static void main (String [] args) throws IOException {
    
    Point p = new Point(1.0, 1.0, 1.0);
    Point p1 = new Point(0.0, 0.0, 0.0);
    System.out.println (p.distance(p1));
    System.out.println("请输入要修改的x值");
    p.setX ((new BufferedReader (new InputStreamReader (System.in))).readLine());
    //System.out.println (p.distance(p1));
    //p.setX (2.0);
    System.out.println (p.distance (new Point (1.0,1.0,1.0)));
  }}
就看BufferedReader这个就行了.程序大概意思是计算立体空间点到点的距离平方.我想改变每一个点的值.p.distance(2)可以,但用户不一定懂是吧.我想弄成在键盘上直接输入的那种.按自己思想写了这样的语句p.setX ((new BufferedReader (new InputStreamReader (System.in))).readLine());可惜编译不通过.郁闷了,我不是什么程序员啊.菜鸟刚学JAVA.没事就是想编编练练.呵呵.麻烦高手帮改改讲解下.还有就是书上写BufferedReader类不能接收int型.得用这个语句转 int l = Interger.parseInt.(line);这句什么意思啊?Interger是系统定义的类吗?里面参数那个line又是怎么回事.

解决方案 »

  1.   

    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.IOException;public class Point {    private double x;
        private double y;
        private double z;    Point(double a, double b, double c) {        x = a;
            y = b;
            z = c;
        }    public void setX(double q) {        x = q;
        }    public void setY(double w) {        y = w;
        }    public void setZ(double e) {        z = e;
        }    public double distance(Point p) {        return (x - p.x) * (x - p.x) + (y - p.y) * (y - p.y) + (z - p.z) * (z - p.z);    }    public static void main(String[] args) throws IOException {        Point p = new Point(1.0, 1.0, 1.0);
            Point p1 = new Point(0.0, 0.0, 0.0);
            System.out.println(p.distance(p1));
            System.out.println("请输入要修改的x值");
            p.setX(Integer.parseInt((new BufferedReader(new InputStreamReader(System.in))).readLine()));
            //System.out.println (p.distance(p1));
            //p.setX (2.0);
            System.out.println(p.distance(new Point(1.0, 1.0, 1.0)));
        }
    }
      

  2.   

    说明一下:
    1.BufferedReader,InputStreamReader,IOException都是在java.io包中,所以import语句是如上写的
    2.BufferedReader的readLine函数的功能是读入一行字符串,一行的标准是遇到文件换行符或者文件尾结束,函数的返回值是String类型,String当然不能同值给int型的数据了,需要用Integer.parseInt函数来转换,Integer是java.lang包中的类,程序在编译期间,会自动导入的,所以不需要import java.lang.Integer这句.parseInt的参数是字符串,返回值是相应的整数.
      

  3.   

     public void setX(double q) {        x = q;
    }
     p.setX(Integer.parseInt((new BufferedReader(new InputStreamReader(System.in))).readLine()));
    参数的类型不一致
      

  4.   

    如果你只是想随便玩玩的话,就忽略我下面的话.
    学习Java,还是应该系统的学习,搞个基础的书,一步步看.当然,没有一本书会详尽Java的API函数,你需要一个Java帮助文档,一般是.chm格式的,网上多的是,中英文版都有.它里面记录了当时Java的大部分API函数,并且仔细说明了功能用法,是Java程序员必备的参考资料
      

  5.   

    不对啊,显示的是找不到符号这个错误类BufferedReader;和类Point.
      

  6.   

    你的程序中是:
    import java.BufferedReader;
    这样当然找不到了,我不是说了吗?BufferedReader在java.io包中
    我的程序是:
    import java.io.BufferedReader;
    请仔细对比我和你的程序的区别
      

  7.   

    哦这把对了,刚才没看见IO不好意思.大意了.是得下个API文档,其实我都不知道API文档是啥,没见过.我是学计算机的.太菜了.这把虽然能编译,但是有异常.可能是你说的返回值类型不一致吧.那double类型的值想要返回怎么办啊
      

  8.   

    那是可以强制转换的,而且转换规则是这样的:
    1.当将精度高的数据赋给精度低的数据时,需要程序员强制转换
    如:
    int i;
    double d=1.0;
    i=d;//这样编译是无法通过的,会提示你什么精度损失之类的
    你需要改为: i=(int)d
    2.当将精度低的数据赋给精度高的数据时,可以自动转换的
    如:
    int i=1;
    double d=i;
    这样是不会报错的.
    你程序中的赋值,就是自动转换的
      

  9.   

    我改了可是程序还是有异常.我是在p.setX((double)(Integer.parseInt((new BufferedReader(new InputStreamReader(System.in))).readLine())));
    这改的.
      

  10.   

    这个程序不用强制转换吧读取一行字符串然后用函数把字符串转换成int型.用这个int实参传送给double型的形参.应该是自动转换啊.为什么有异常呢
      

  11.   

    Double.parseDouble()是可以的,直接转换为Double型的,但是,用Integer.parseInt也不会有问题的,我运行过的.而且,加上(double)也不应该有问题.要不你把运行时的异常提示贴出来