I'm tasked to create a main method that calls two methods. The first method returns array of strings while the second method takes the array of strings and print out the element on separate lines. the main method then passes the result of calling the first method to the second and then halt. Am i doing it understanding the question correctly? When i compile and execute i get
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);
}
}
At first, correct your method2
It has to be able to accept an array of String
elements as parameter:
public static void method2(String[] test)
{
// this line is not needed -> String[] test = method1();
for(String str : test)
System.out.println(str);
}
This way, you actually pass the data to the method, as your requirements described. A bonus is: it's re-usable for other String
arrays as well.
Your method1
has got a lot of redundant code. Just filter that out
public static String[] method1()
{
return new String[] {"sunshine","road","73","11"};
}
and now, your main
method, just to link them. Change
public static void main(String args[])
{
method1();
method2(); // this will now cause a compilation error, because it expects a parameter
System.exit(0);
}
to:
public static void main(String args[])
{
method2(method1());
System.exit(0);
}
The way your code was originally built, method1
was called two times, first in the main
method, which was completely redundant, since the result wasn't used, second time in the method2
, where it shouldn't be called, since the data should be passed as a parameter.