如何从命令行读取数组并在JAVA中使用通用方法显示它们?

如何从命令行读取数组并在JAVA中使用通用方法显示它们?,java,arrays,generics,Java,Arrays,Generics,我正在研究java中与泛型相关的一些东西,我在互联网上找到了这个例子。这可能是一个简单的问题,但我想从使用泛型的人那里找到一个正确的答案。此泛型方法将不同类型的数组作为输入参数并显示它们。现在我想通过从命令行读取这些数组来实现这一点。你能帮我找到正确的方法吗?谢谢 public class GenericMethodTest { // generic method printArray public stati

我正在研究java中与泛型相关的一些东西,我在互联网上找到了这个例子。这可能是一个简单的问题,但我想从使用泛型的人那里找到一个正确的答案。此泛型方法将不同类型的数组作为输入参数并显示它们。现在我想通过从命令行读取这些数组来实现这一点。你能帮我找到正确的方法吗?谢谢

public class GenericMethodTest
    {
       // generic method printArray                         
       public static < E > void printArray( E[] inputArray )
       {
          // Display array elements              
             for ( E element : inputArray ){        
                System.out.printf( "%s ", element );
             }
             System.out.println();
        }

        public static void main( String args[] )
        {
            // Create arrays of Integer, Double and Character
            Integer[] intArray = { 1, 2, 3, 4, 5 };
            Double[] doubleArray = { 1.1, 2.2, 3.3, 4.4 };
            Character[] charArray = { 'H', 'E', 'L', 'L', 'O' };

            System.out.println( "Array integerArray contains:" );
            printArray( intArray  ); // pass an Integer array

            System.out.println( "\nArray doubleArray contains:" );
            printArray( doubleArray ); // pass a Double array

            System.out.println( "\nArray characterArray contains:" );
            printArray( charArray ); // pass a Character array
        } 
    }
公共类GenericMethodTest
{
//通用方法printArray
公共静态无效打印阵列(E[]输入阵列)
{
//显示数组元素
对于(E元素:inputArray){
System.out.printf(“%s”,元素);
}
System.out.println();
}
公共静态void main(字符串参数[])
{
//创建整数、双精度和字符数组
整数[]intArray={1,2,3,4,5};
Double[]doubleArray={1.1,2.2,3.3,4.4};
字符[]charArray={'H','E','L','L','O'};
System.out.println(“数组整数数组包含:”);
printary(intArray);//传递一个整数数组
System.out.println(“\n数组包含:”);
printArray(doubleArray);//传递一个双数组
System.out.println(“\nArray characterArray包含:”);
printary(charArray);//传递字符数组
} 
}

我认为您必须将数据类型作为命令行的一部分,或者使用一个例程通过启发式方法检测该类型。差不多

java GenericMethodTest "doubleArray" "1.1 2.2"
其中有两个参数,类型和数组。然后需要一个构造函数,将第二个参数从字符串转换为数组,例如

public DoubleArray (String sin) {
    String[] ss = sin.split(" ")'
    double dd[] = new Double[ss.length];
    for (String s : ss) {
        dd[i++] = new Double(s);
    }
}

我在科学编程中经常做这类事情,我通常以数据类型的特殊情况结束。程序如何知道什么是整数、字符串或双精度?你要么告诉它,要么给它一个猜测的机会。

我不确定你到底在问什么-只是“如何将字符串数组从命令行参数转换为数组,例如int”?你想通过命令提示符读取数组的元素吗?你知道如何使用命令提示符运行程序吗?@Doyle ints或double或float或其他任何你调用不同数组的方法时,我想自己输入元素,然后打印回来(我知道这是一个简单而愚蠢的例子),而不是将它们定义为
Integer[]bla={1,2,3}
。然后你得到了一条线,对吗?我可以创建一个字符串数组,然后显示它们,但我希望我的方法能够用不同的数组调用,而不仅仅是字符串。谢谢您的回复。我对你的答案投了赞成票,但这并不是我真正想要的。也许我的问题有点愚蠢。实际上,我有一个通用的排序方法,我想对我输入的任何类型的数据进行排序。正如您所说的,这个想法是拆分字符串并构造一个双数组。但您不知道输入的数据类型。我认为这很简单,但我似乎能找到正确的方法。或者我没有足够的经验。无论如何,谢谢你。@Michiru-这似乎是正确的答案。参数将始终是字符串;您要么猜测它们的类型(这很难而且容易出错),要么让用户声明它们的类型(例如这里的
“doubleArray”
描述符)。然后需要定义如何从字符串转换为这些类型中的任何一种,并调用正确的方法。我不知道你在想什么,但我想不出任何可行的解决方案不包括这两个步骤。