public class UseStrList
{
public static void main(String[] args)
{
StrList.printElements("args", args);
StrList.main(args);
}
}
class StrList
{
public static String getValue(String[] array)
{
return array.toString();
}
public static void printElements(String label, String[] array)
{
StrList1.printElements(label, array);
}
public static void printElements(String[] array)
{
String label = getValue(array);
StrList.printElements(label, array);
}
public static void main(String[] args)
{
String label = getValue(args);
printElements(label, args);
printElements("args", args);
printElements(args);
StrListUnitTester.main(args);
}
}
class StrListUnitTester
{
public static final StrListFactory f = new StrListFactory();
public static void doTest(String[] array)
{
do
{
String label = StrList.getValue(array);
StrList1.printElements(label, array);
StrList2a.printElements(label, array);
StrList2b.printElements(label, array);
StrList2c.printElements(label, array);
StrList3.printElements(label, array);
array = f.produce();
}
while (!f.cycled);
}
public static void testRecursively(String[] array)
{
String label = StrList.getValue(array);
StrList1.printElements(label, array);
StrList2a.printElements(label, array);
StrList2b.printElements(label, array);
StrList2c.printElements(label, array);
StrList3.printElements(label, array);
if (!f.cycled)
{
array = f.produce();
testRecursively(array);
}
}
public static void main(String[] args)
{
StrListUnitTester.doTest(args);
StrListUnitTester.testRecursively(args);
}
}
class StrList1
{
public static void printElements(String label, String[] array)
{
if (array == null)
{
Out.print("\n");
return;
}
else
{
Out.print(label + ":");
}
for (String element : array)
{
Out.print(" " + element);
}
Out.print("\n");
}
}
class StrList2a
{
public static void printElements(String label, String[] array)
{
if (array == null)
{
System.out.print('\n');
return;
}
else
{
Out.print(label + ':');
}
final int n = array.length;
for (int i = 0; i < n; i++)
{
Out.print(' ' + array[i]);
}
Out.print('\n');
}
}
class StrList2b
{
public static void printElements(String label, String[] array)
{
final int maxElements = Integer.MAX_VALUE;
if (array == null)
{
Out.print("\n");
return;
}
else
{
System.out.print(label + ":");
}
final int n = array.length;
for (int i = 0; i < n && i < maxElements; i++)
{
Out.print(" " + array[i]);
}
Out.print("\n");
}
}
class StrList2c
{
public static void printElements(String label, String[] array)
{
final int maxElements = Integer.MAX_VALUE;
if (array == null)
{
Out.print("\n");
return;
}
else
{
Out.print(label + ":");
}
final int n = array.length;
for (int i = 0; i < n; i++)
{
if (i >= maxElements)
{
break;
}
Out.print(" " + array[i]);
}
Out.print("\n");
}
}
class StrList3
{
public static void printElements(String label, String[] array)
{
if (array == null)
{
Out.println();
return;
}
else
{
Out.print(label + ":");
}
final int n = array.length;
int i = 0;
while (i < n)
{
Out.print(" " + array[i]);
i++;
}
Out.println();
}
}
class Out
{
public static void print(char c)
{
System.out.print("" + c);
}
public static void print(String s)
{
System.out.print(s);
}
public static void println()
{
System.out.println();
}
}
class StrListFactory
{
private static final String
e = ((Double)Math.E).toString();
private final String[][] defQ = // default queue
{
{"K & R says, \"Print:"},
{"\t", "h", e, "1", "l0"},
{"\t", "world\n"},
{"\""},
{"."},
{ null },
{},
null
};
private final String[][] cirQ; // circular queue
private final int n;
private int i = 0;
public boolean cycled = false;
public StrListFactory()
{
this(null);
}
public StrListFactory(String[][] arrays)
{
cirQ = arrays == null ? defQ : arrays;
n = cirQ.length;
}
public String[] produce()
{
String[] array = cirQ[i];
i = (i + 1) % n;
cycled = i == 0;
return array;
}
}