Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于用户输入命名变量(Java)_Java_Variables - Fatal编程技术网

基于用户输入命名变量(Java)

基于用户输入命名变量(Java),java,variables,Java,Variables,我似乎不知道该怎么做。我试图制作一个家谱程序,解释用户输入,并在动画窗口中创建和绘制新节点。例如,用户将键入John son of Jim,标记为John的节点将出现在标记为Jim的已存在节点下 图形方面已经完成了,但我不知道如何继续添加子项并将它们链接到正确的父项。我是否为此创建arraylist String testString = wordTextField.getText(); String[] parts = testString.split(" "); String firstWo

我似乎不知道该怎么做。我试图制作一个家谱程序,解释用户输入,并在动画窗口中创建和绘制新节点。例如,用户将键入John son of Jim,标记为John的节点将出现在标记为Jim的已存在节点下

图形方面已经完成了,但我不知道如何继续添加子项并将它们链接到正确的父项。我是否为此创建arraylist

String testString = wordTextField.getText();
String[] parts = testString.split(" ");
String firstWord = parts[0];
String lastWord = parts[parts.length - 1];
TreeNode *child's name* = new TreeNode(String firstWord, TreeNode *parent's name*);

在上面的代码中,最后一行是不正确的,但我已经这样标记它,以显示它们在TreeNode方法中的类型。星号是我希望变量名作为字符串值的形式,但我知道这可能是不可能的。我该怎么做才能让它工作?我希望用户能够连续地创建子节点,以及那些子节点的子节点,并且只有一个根父节点。我希望能够组织哪些家长有哪些孩子,并正确分配。任何帮助都将不胜感激

你不能这样做,你也不应该这样做。你需要的是把父母和孩子联系起来。很难提出具体的建议,因为我不知道您的应用程序的上下文。当您在子节点的构造函数中传递父节点时,您似乎走在了正确的轨道上。为什么在这里需要以用户输入命名变量?变量名可以是任何名称。

您不能这样做,但如果您希望一个节点对应一个字符串,可以使用Map。首先,初始化用于容纳所有节点的映射:

Map<String, TreeNode> nodes = new HashMap<String, TreeNode>();
每当创建节点时,请将其放在地图中:

TreeNode node = new TreeNode(firstWord, "parent's name");
nodes.put("child's name", node);

我想我不需要将它们链接到用户输入。但是,例如,如果用户让约翰成为迈克尔的儿子,迈克尔成为山姆的儿子,那么用户就会让山姆有另一个儿子。我如何跟踪哪位家长是哪位?如果用户动态地给父对象命名,我如何将新的TreeNode方法定向到父对象的TreeNode变量?您需要使用正确的面向对象编程。创建一个适当的族模型,其中一个节点可以有两个父节点和数量不确定的子节点。每个节点都应该有一个名称变量,该变量可以在不破坏任何内容的情况下自由更改。节点还应该具有诸如出生日期和死亡日期等属性。然后,只需将对象正确链接在一起并解析结构以显示它。感谢您的回复。我能够将父对象链接到他/她的子对象,方法是按照arraylist中输入的顺序保留所有名称,然后使用for循环将当前子对象分配给所述arraylist的适当索引。我不知道这是否有任何意义,但它似乎已经完成了工作。在这个阶段,任何可行的方法都是好的,我想,但我仍然强烈建议你学习一些面向对象编程教程,因为它是一项核心技能。
TreeNode node = new TreeNode(firstWord, "parent's name");
nodes.put("child's name", node);