有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java解析用户输入字符串

我被要求开发一个小游戏,用户从两个不同的列表中选择数字。一旦他们做到了这一点,就会随机生成一个目标编号,并使用所选编号(总共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) 个答案

  1. # 1 楼答案

    您可以使用String.split()

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

    然后,您将拥有一个数组,其中添加了每个元素。例如,“3+4+5”将给出一个长度为3的字符串数组,其中第一个元素是3,第二个元素是4,第三个元素是5

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

    因此,首先在除法上进行拆分(记住转换为double以避免截断)。然后,对于除法拆分中的每个元素,按乘法拆分。然后进行加法、减法等。然后可以使用整数向后遍历。parseInt()/Double。parseDouble对值进行反向工程,直到返回到第一个操作

    这不是一个简单但有趣的练习,它将为您提供有关String类、arraysjava operators以及使用变量保存中间值的大量实践