如何在java中询问键盘输入时如何从数组中输入

时间:2014-10-13 12:19:25

标签: java

假设我有一个名为Invoked的类,我想使用Invoker类的反射来调用它。但是我想从Invoker类中声明的数组给出输入,只要它从键盘获得输入代码。

class Invoked {
    public static void main(String ar[]) {
        java.util.Scanner s = new java.util.Scanner();
        // here i want to give input stored in array except of console from Invoker class.
        System.out.println("input given from keyboard is : " + s.next());
    }
}

class Invoker {
    public static void main(String ar[]) {
        // i want to pass array here for keyboard input values like
        Class<?> cl = loader.loadClass("Invoked");
        Method m = cl.getDeclaredMethod("main", new Class[] {String[].class });
        m.setAccessible(true);
        m.invoke(null, new Object[] {null });

    }

}

3 个答案:

答案 0 :(得分:0)

java.util.Scanner()默认从System.in读取[停止:扫描程序中没有默认构造函数,您的代码将无法编译]。您可以在调用main(System.setIn())之前将其设置为例如StringInputStream。

class Invoked{
public static void main(String ar[])
{
java.util.Scanner s=new java.util.Scanner(System.in);
//here i want to give input stored in array except of console from Invoker class.
System.out.println("input given from keyboard is : "+s.next());
}
}

class Invoker
{
public static void main(String ar[])
{
//i want to pass array here for keyboard input values like 
Class<?> cl = loader.loadClass("Invoked");
Method m=cl.getDeclaredMethod("main", new Class[] { String[].class });
m.setAccessible(true);
System.setIn(new StringBufferInputStream("a b 100"));
m.invoke(null, new Object[] { null });

}

}

答案 1 :(得分:0)

使用ArrayList根据用户输入的行数生成动态数组。

class Invoked {
    public static void main(String[] args) {
        java.util.Scanner s = new java.util.Scanner(System.in);
        List<String> input = new ArrayList<>;
        while(s.hasNext()) {
             input.add(s.next());
        for(String i : input)
             System.out.println("input given from keyboard is : " + i);
    }
}

要将ArrayList转换为数组,请使用

String inArray = input.toArray();

答案 2 :(得分:0)

我得到了我的问题的确切代码。这是下面给出的代码。

import java.io.ByteArrayInputStream;
import java.lang.reflect.Method;
class Invoked{
public static void main(String ar[])
{
java.util.Scanner s=new java.util.Scanner(System.in);
System.out.println("input given from keyboard is : "+s.next());
int i=s.nextInt()+s.nextInt();
System.out.println("input given from keyboard is : "+i);
}
}

class Invoker
{
public static void main(String ar[])throws Exception
{
Class<?> cl = Class.forName("Invoked");
Method m=cl.getDeclaredMethod("main", new Class[] { String[].class });
m.setAccessible(true);
String inputString="ashish 15 16";
System.setIn(new ByteArrayInputStream(inputString.getBytes()));
m.invoke(null, new Object[] { null });
}
}