解析用户输入字符串

时间:2014-03-23 19:07:31

标签: java string list parsing target

我基本上被要求开发一个小游戏,用户从两个不同的列表中选择数字。一旦他们完成了这一操作,就会随机生成一个目标数字,并使用所选的数字(总共6个),他们必须只在它们看似达到目标数量时使用数字,然后检查并进行适当的评分。

List<Integer> large = Arrays.asList(25, 50, 75, 100);
List<Integer> small = Arrays.asList(1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6,
            7, 7, 8, 8, 9, 9, 10, 10);

好的,我现在要做的是成功解析用户输入字符串,这样我就可以将它们的工作与生成的目标数进行比较。他们只能使用运算符+ - * /.

例如,如果他们输入:99 + 1 * 3 / 2-1,我想成功解析它以达到目标数字。

我不太确定如何做到这一点,虽然我已尝试了一点,但无法进一步。

Scanner myAns = new Scanner(System.in);
                userInput = myAns.nextLine();
                String st = userInput;
                int result;
                for(int i=0;i<st.length();i++)
                {
                if(st.charAt(i)=='+')
                  {
                    result = Integer.parseInt(st.substring(0, i))+Integer.parseInt(st.substring(i+1, st.length()));

                  }

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您可以使用String.split()

Scanner scanner = new Scanner(System.in);
String userInput = scanner.nextLine();
String[] plusSplit = userInput.split("+");

然后,您将拥有一个添加每个元素的数组。因此,例如“3 + 4 + 5”将为您提供长度为3的String数组,其中第一个元素为3,第二个为4,第三个为5。

您可以按照操作员强度的顺序执行嵌套拆分。

首先在分区上拆分(记得转换为双倍以避免截断)。然后对于除法拆分中的每个元素,在乘法时拆分。然后加法,减法等。然后你可以使用Integer.parseInt()/ Double.parseDouble向后遍历来反向设计你的值,直到你回到第一次操作。

这不是一项简单但有趣的练习,可以让您通过String课程arraysjava operators和使用变量来保存您的中间值,从而为您提供出色的练习。