Основной метод, который вызывает два метода и передает результат вызова первого метода во второй метод - PullRequest
0 голосов
/ 30 августа 2018

Мне поручено создать метод 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 голосов
/ 30 августа 2018

Если вы хотите, чтобы данные «текли» через главное, как вы должны это сделать:

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); 
    } 
}
0 голосов
/ 30 августа 2018

Сначала исправьте 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, который был полностью избыточным, поскольку результат не использовался, второй раз в method2, где он не должен вызываться, поскольку данные должны передаваться как параметр.

0 голосов
/ 30 августа 2018

Правильный способ выполнения описанного выше описан ниже. Вам нужно взять возвращаемое значение метода one и вставить его в метод два в качестве параметра.

 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); 
      } 
    }
0 голосов
/ 30 августа 2018

Вы почти у цели: возврат вашего 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); 
} 
0 голосов
/ 30 августа 2018

Ваш код работает, но в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...