Java以空格分隔的行读取并插入到树中

Java以空格分隔的行读取并插入到树中,java,Java,我试图读入由空格分隔的用户输入,并将值插入到树中。在我有两位数整数之前,一切都正常工作。它似乎在读取每个整数字符并插入到树中,而我希望它先读取这两个字符,然后将两位数的整数插入到树中 e、 g。当用户输入9 3+7*时,这可以正常工作,但是,当用户输入10 3+7*时,它将首先插入10作为1,然后插入0。我希望它插入10。(这是eqn的前缀格式) 以下是我到目前为止的情况: 在我的主课上 public static void main(String [] args){ Scanner s

我试图读入由空格分隔的用户输入,并将值插入到树中。在我有两位数整数之前,一切都正常工作。它似乎在读取每个整数字符并插入到树中,而我希望它先读取这两个字符,然后将两位数的整数插入到树中

e、 g。当用户输入9 3+7*时,这可以正常工作,但是,当用户输入10 3+7*时,它将首先插入10作为1,然后插入0。我希望它插入10。(这是eqn的前缀格式)

以下是我到目前为止的情况:

在我的主课上

public static void main(String [] args){
    Scanner scan = new Scanner(System.in);
    ExpressionTree et = new ExpressionTree();
    System.out.println("\nEnter equation: ");
    et.buildTree(scan.nextLine());
}
在我的buildTree方法中

public void buildTree(String eqn){
    for(int i = 0; i <= eqn.legnth()-1; i++)
    insert(eqn.charAt(i));    //how to insert 10 instead of 1 and then 0??
}
公共void构建树(字符串eqn){

对于(int i=0;i用户输入中的每组字符之间是否有空格?换句话说,是否类似于10空格3空格+空格7。如果没有,请尝试使用此格式输入,然后可以在空格上拆分输入

用户输入中的每组字符之间是否有空格?换句话说,是否类似于10空格3空格+空格7。如果没有,尝试以这种格式输入,然后您可以在空格上分割输入。
buildTree()
方法中的问题是,您在迭代方程的每个字符时,没有考虑空格。 相反,您可以使用
String[]eqnSubparts=eqn.split(“”)将eqn拆分为空格,然后迭代此数组并在树中插入数组的每个条目。

注意:如果您还想在树中插入空格,那么在插入数组的每个条目时进行迭代时,也要插入空格。

您的
buildTree()
方法中的问题是,您在迭代等式的每个字符时,没有考虑到空格。 相反,您可以使用
String[]eqnSubparts=eqn.split(“”)将eqn拆分为空格,然后迭代此数组并在树中插入数组的每个条目。

注意:如果您还想在树中插入空格,那么在插入数组的每个条目时进行迭代时,也要插入一个空格。

为什么不基于空格标记字符串?为什么不采用逐字符的方法,而不是采用逐字符串的方法。在java中使用split函数

split(" ")
此函数返回字符串数组

String arrayOfStrings[];
arrayOfStrings = inputString.split(" ")
10 3+7*--->将其存储在字符串数组中

String arrayOfStrings[];
arrayOfStrings = inputString.split(" ")
字符串1=10

字符串2=3

字符串3=+

字符串4=7

字符串5=*


我认为应该将其作为字符串而不是单个字符插入。

为什么不基于空格标记字符串?为什么不采用逐字符的方法,而不是采用逐字符串的方法。在java中使用split函数

split(" ")
此函数返回字符串数组

String arrayOfStrings[];
arrayOfStrings = inputString.split(" ")
10 3+7*--->将其存储在字符串数组中

String arrayOfStrings[];
arrayOfStrings = inputString.split(" ")
字符串1=10

字符串2=3

字符串3=+

字符串4=7

字符串5=*


我认为您应该将其作为字符串而不是单个字符插入。

是的,我的用户输入中有空格,并且当我只输入单个数字时,程序工作正常。请提供问题的答案。我投了赞成票,但没有答案。在内置树中,将insert(eqn.charAt(I));替换为insert(eqnSubparts[I]);是的,我的用户输入中有空格,当我只输入一个数字时,程序运行良好。请提供问题的答案。我投了赞成票,但没有答案。在内置树中,将insert(eqn.charAt(i));替换为insert(eqnSubparts[i]);好的,那么你是说insert(arrayOfStrings[i])?是的,是的。您可以将字符串传递给insert方法。如果您想更自如地使用字符,可以对标记化字符串使用string.charAt(index)方法。好的,您是说类似insert(arrayOfStrings[i])的东西吗?是的,对。您可以将字符串传递给insert方法。如果您想更熟悉字符,可以使用string.charAt(索引)方法。我更新了问题并添加了完整的代码。似乎很难从字符更改为字符串。当我尝试转换它时,我遇到了一个错误。您可以将一个字符串传递给insert方法&当您将该字符传递给isDigit方法时,此时您可以迭代字符串和pass。当字符串中的所有字符都满足时,您可以在if/else块中调用您的操作。我更新了问题并添加了完整的代码。似乎很难从一个字符更改为另一个字符串。当我尝试转换它时,我遇到了一个错误。您可以将字符串传递给insert方法&当您传递字符时对于isDigit方法,此时您可以迭代字符串的每个字符并传递。当字符串的所有字符都满足时,您可以在if/else块中调用您的操作