-3

我希望将值变量的结果传递给另一个类。另外我不应该将计算的返回类型从 void 更改为 String

public class One {

  private String value = null;
   public void compute(){
       Scanner s = new Scanner(System.in);
       System.out.println("Enter the String");
       value = s.next();

   }
   public String calculate(){

       System.out.println("In Calculate.........."+value);
       return value;
   }
   public static void main(String[] args){
       One o = new One();
       o.compute();
       o.calculate();
   }    
}

public class Two {
    public static void main(String[] args){
      System.out.println(new One().calculate());

    }
}

它返回空值

它是这样打印的

In Calculate..........null
null
4

4 回答 4

3

确保在调用计算之前调用计算。这应该可以解决问题:

public class Two {
    public static void main(String[] args){
      One one = new One();
      one.compute();
      System.out.println(one.calculate());

    }
}
于 2013-06-13T10:18:19.543 回答
2

这将始终返回 null ,因为您没有调用one.Compute()两个

正确的调用应该是这样的

public class Two {
    public static void main(String[] args){
          One o = new One();
          o.compute();

         System.out.println(o.calculate());

    }
}

或者

you need to modify code of One to call compute in the constructor 
于 2013-06-13T10:18:10.913 回答
1

首先,在一个项目中不允许使用两种主要方法!

接下来,您没有为变量分配任何值,value 您希望它如何为您打印它?您需要执行以下操作。

public class Two {
    public static void main(String[] args){
      One myOne = new One();
       myOne.compute();
      //enter some value and then print
      System.out.println(new One().calculate());

    }

最后value是一个实例变量,并自动分配默认值(字符串为空)。所以不需要显式分配。

于 2013-06-13T10:20:54.887 回答
1

这可能会帮助您:

public class two
{
     public static void main(String[] args){
          One one=new One();
          one.compute();
          System.out.println(one.calculate());
    }
}
于 2013-06-13T10:28:12.573 回答