请教:一个类的方法调用另外一个类的方法,调用完毕后如何把结果值返回给原来的类例如:test1.java
public class test1
{
    public void main(String args[])
    {
        test2 mytest = new test2;
        int aaa = 3;
        mytest.ddt(aaa); //這樣就傳進去了呀...
        //这里要用到test2.java方法ddt返回的值i
    }
}
test2.java
public class test2
{
    public void ddt(int i)
    {
        System.out.println(i);
        //如何把结果i传到test1呢?
    }
}
看了书是好像是用return?

解决方案 »

  1.   

    test1.java
    public class test1
    {
        public void main(String args[])
        {
            test2 mytest = new test2;
            int aaa = 3;
            int bbb = mytest.ddt(aaa); //這樣就傳進去了呀...
            //这里要用到test2.java方法ddt返回的值i
        }
    }
    test2.java
    public class test2
    {
        public int ddt(int i)
        {
            System.out.println(i);
            return i;
            //如何把结果i传到test1呢?
        }
    }
    public void ddt(int i)是返回空值的,你想把i返回来,i是int类型,所以
    public int ddt(int i)
      

  2.   

    错了,public void ddt(int i)是不返回任何值的
      

  3.   

    在test1中使用 new test2().ddt(i)
    不是可以了么?
      

  4.   

    public void ddt(int i)
    是接收test1.java传过来的aaa。
      

  5.   

    public void ddt(int i)
    是接收test1.java传过来的aaa。
    ```````````````
    但是他要返回一个值啊,你void是不返回值的
    所以要public int ddt(int i)
    lz先仔细看哈书`
      

  6.   

    楼主,这个问题问的基本上可以说是有点faint的。
    楼主的函数是没有返回值的,System.out.println(i);只是显示在屏幕上,不是返回;
    建议把函数的定义再看看。
    void f(){
    //代码
    return;
    //代码
    }
    这样的 return 仅仅代表跳出函数,f也没有返回值,相当于一个procedure;
    int f1(){
      return 100;
    }
    int f(){
      return f1();
    }
    这样的 f()执行后返回的是100,see?
    如果说这一层理解了,加上类的封装之后就不明白了,可能是对类和对象的概念还不够理解。
    努力吧!这只是个小问题。
      

  7.   

    1。一切都是value parameter in java
    2。JAVA中存在着两种类型,对象 and 简单类型(int, char, float...)如何修改传入得参数?
    1。参数类型为简单类型,无论是C、C++还是JAVA,简单类型得参数传递必定是值传递而非引用传递(这里假设搂住理解值传递和引用传递这两个基本的参数传递模式),期望简单的修改参数值而影响源对象数据是不可能的(至少在JAVA中)。唯一可行的方法是通过return value返回值,比如
    int add(int augend, int addend) {
      return augend + addend;
    }调用方:
    int expectedChanger = 10;
    int addend = 15;
    expectedChanger = add(expectedChanger, addend);C#中引入了一种新的out param,可以解决这种状况,但一般不推荐使用,因为我们并不期望方法内部与调用外部产生某种程度的耦合,特殊情况除外。
    2。参数类型为对象类型
    对象类型的参数的传递通过引用完成,可以在方法体内改变被传递参数的内部数据,这可以保证变更是同步的,比如:class MyInteger {
      private int i;  void setI(int newI) { i = newI; }
      int getI() { return i; }
    }// 某个可能引起对象内部变化的方法
    void change(MyInteger intValue) { intValue.setI(5); }// 外部调用此方法的代码片断
    MyInteger newInt = new MyInteger(1);
    change(newInt);
    assertEquals(5, newInt.getI());  // 断言调用了change方法后,局部变量newInt的内部值发生了变化。但这种方法仅仅能够同步改变参数对象的内部状态,因为无论是局部变量的引用newInt,还是参数引用intValue(change方法的参数名)都引用到同一个对象。
    但你不能期望在change方法内部直接改变外部的引用对象,比如:// 某个改变参数对象引用的方法
    void changeReference(MyInteger intValue) { intValue = new MyInteger(5); }// 外部调用此方法的代码片断
    MyInteger newInt = new MyInteger(1);
    changeReference(newInt);
    assertEquals(1, newInt.getI());  // 断言调用了changeReference方法后,局部变量newInt的内部值并未发生变化。原因是作为对对像引用的引用本身是一种值传递,改变参数引用的对象,不会影响到外部的引用。@.@||~
      

  8.   

    Test1.java
    public class Test1
    {
        public void main(String args[])
        {
            test2 mytest = new test2;
            int aaa = 3;
            aaa = mytest.ddt(aaa); //用一个变量接收返回的值
        }
    }
    test2.java
    public class test2
    {
        public int ddt(int i)
        {
            System.out.println(i);
            return i;//用一个return返回i 的数值
        }
    }