调用两个方法并将调用第一个方法的结果传递给第二个方法的主要方法

时间:2018-08-30 10:06:42

标签: java function methods

我的任务是创建一个调用两个方法的main方法。第一种方法返回字符串数组,而第二种方法采用字符串数组并在单独的行上打印出元素。然后main方法将调用第一个方法的结果传递给第二个方法,然后停止。我是在正确理解问题吗?当我编译并执行时,我得到了

sunshine
road
73
11

public class Hihihi
{

public static void main(String args[]) 
{
  method1();
  method2();//Will print the strings in the array that
            //was returned from the method1()
   System.exit(0); 
}                                 



public static String[] method1() 
{
     String[] xs = new String[] {"sunshine","road","73","11"};
     String[] test = new String[4];
     test[0]=xs[0];
     test[1]=xs[1];
     test[2]=xs[2];
     test[3]=xs[3];
     return test;
 }

   public static void  method2()
  { 
    String[] test = method1();
    for(String str : test)
        System.out.println(str); 
  } 
}

5 个答案:

答案 0 :(得分:2)

您的代码有效,但是在main中,method1的返回值将被忽略。无需在method1中调用method2

您可以让method2接受参数String[] strings

public static void method2(String[] strings) {

    for (String str : strings)
        System.out.println(str);
}

并将method1的结果传递给method2

String[] result = method1();
method2(result);//Will print the strings in the array that

答案 1 :(得分:2)

首先,请更正您的method2

它必须能够接受String元素数组作为参数:

public static void  method2(String[] test)
  { 
    // this line is not needed -> String[] test = method1();
    for(String str : test)
        System.out.println(str); 
  } 

通过这种方式,您实际上已按照要求将数据传递给方法。一个好处是:它也可以在其他String数组中重复使用。

您的method1有很多冗余代码。只是过滤掉

public static String[] method1() 
{
     return new String[] {"sunshine","road","73","11"};
}

现在,您的main方法仅用于链接它们。更改

public static void main(String args[]) 
{
  method1();
  method2(); // this will now cause a compilation error, because it expects a parameter
   System.exit(0); 
} 

收件人:

public static void main(String args[]) 
{      
  method2(method1());
   System.exit(0); 
} 

代码method1的原始构建方式被两次调用,第一次是在main方法中,这是完全多余的,因为未使用结果,第二次是在{{ 1}},因为应该将数据作为参数传递,所以不应该调用它。

答案 2 :(得分:1)

执行上述操作的正确方法如下所示。您必须将方法一的返回值作为参数插入到方法二中。

 public class Hihihi
    {

    public static void main(String args[]) 
    {
      String[] test=method1();
      method2(test);
    }                                 



    public static String[] method1() 
    {
         String[] xs = new String[] {"sunshine","road","73","11"};
         String[] test = new String[4];
         test[0]=xs[0];
         test[1]=xs[1];
         test[2]=xs[2];
         test[3]=xs[3];
         return test;
     }

       public static void  method2(String[] newtest)
      { 

        for(String str : newtest)
            System.out.println(str); 
      } 
    }

答案 3 :(得分:1)

您快到了:method1()的返回应该在第一次调用中使用(实际上是在忽略它),并且您必须使用该返回值(我在代码中做了一些注释)以及)

public static void main(String args[]) {
  String[] result = method1();  //TAKE THE VALUE HERE
  method2(result);//pass the result here as parameter
  System.exit(0); //there's no need of this, the program will exit when method2 is finished
}  

因此,编辑method2以获取method1的结果作为参数

public static void  method2(String[] arrayToPrint){ 
    for(String str : arrayToPrint)
        System.out.println(str); 
} 

答案 4 :(得分:1)

如果您希望数据通过主管道“流动”,您应该这样做:

public static void main(String args[]){
      String[] arr = method1();
      method2(arr);
      System.exit(0); 
}   

public static String[] method1(){
     String[] xs = new String[] {"sunshine","road","73","11"};
     String[] test = new String[4];
     test[0]=xs[0];
     test[1]=xs[1];
     test[2]=xs[2];
     test[3]=xs[3];
     return test;
}

public static void  method2(String[] arr){ 
    for(String str : arr){
        System.out.println(str); 
    } 
}