gpt4 book ai didi

java - 想要读取用户输入并在第二类中调用方法

转载 作者:太空宇宙 更新时间:2023-11-04 15:13:30 24 4
gpt4 key购买 nike

再次向 StackOverflow 致敬,

简短版本:如果我有一个名为 secondaryCommand 的字符串,并且该字符串是我想在另一个类中调用的方法,那么如何以以下格式使用该字符串:“圆.第二个命令”实际调用该方法?

长版:我正在编写一个关于形状操作的程序 - 目前我只使用 Circle,但一旦 Circle 正常工作,我将扩展到使用另外 3 个形状。我的程序目前的工作原理如下:

InputReader 扫描用户输入,分别返回每个单词输入。这是在我的 ShapeProgrammer 类中通过名为“执行”的方法进行处理的。目前的方法是这样的:

private void execute(String[] commands)
{
String firstCommand = commands[0];
String secondCommand = commands[1];
String thirdCommand = commands[2];
{
Circle c = shapes.get(firstCommand);
if(firstCommand.equals("circle")) {
makeACircle(commands);
}
else if(c != null){
int newInt = Integer.parseInt(thirdCommand);
if (newInt != null)
Circle.secondCommand(newInt);
c = null;
}
else if(firstCommand.equals("help")) {
printHelp();
}
else {
System.out.println("Unknown command: " + firstCommand);
}
}
}

String[] 命令是在早期方法的 while 语句中定义的,如下所示:

String[] commands = reader.getInput();

我在每个形状的单独类中拥有形状本身的所有方法 - 我已将我想要执行的操作写入 Execute 方法,但 NetBeans 给了我各种错误。

用户将被期望(并)被告知以特定格式输入他们的命令:

创建形状时,它将是形状名称

每个形状都存储在 HashMap 中,其中字符串是名称

当想要编辑/使用形状时,它将是名称命令变量 - 我想我已经可以从 HashMap 调用形状了,现在我只是想知道如何可以使我的字符串 SecondCommand 可用,以便调用其他类的方法。

作为旁注,我有 int newInt = Integer.parseInt(thirdCommand)因为我的一些方法用于更改大小或需要 int 输入。如果更容易的话,我可以摆脱它并将其放入 Circle 类中,然后我只需将thirdCommand 字符串调用到其他方法中并在那里转换为 int 。

最佳答案

我认为reflections API可能会帮助你。这是通过名称调用方法的简单方法。这个tutorial可以帮你。基本上:

        String methodName = ***;
Class classToBeInvoked = **.class;

Method javaMethod = classToBeInvoked.getMethod(methodName, <arguments-type>);
Object returnType = javaMethod.invoke(classToBeInvoked, <arguments>);

关于java - 想要读取用户输入并在第二类中调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21091586/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com