如何制作一个检测字符串中的因子并将其转换为浮点数的函数?

我的家庭之耻

在我的作业中,我的代码必须能够加、减、除和乘。大部分工作都是在老师的帮助下完成的,但我不知道应该如何使它能够乘除。

我假设我需要创建一个新函数来搜索字符串中的因子,然后让它创建一个子字符串。

我曾尝试通过在第 21 行和第 31 行中添加相同的函数来扩展已经编写的代码,但这不起作用。

public static int resultat;
  public static String stykket = "3+9-22+35*2";

  public static void main (String[] args)  {

    while (!taltjek(stykket)){
      stykket = findled(stykket);
    }
    if (taltjek(stykket)){

        int tal = StrToInt(stykket);
        stykket = "";
        resultat += tal;
        println(resultat);
      }
    }
    public static String findled(String stykket){

      int tal;
      for(int i = stykket.length() - 1; i > 0;i--){
        if ((stykket.charAt(i) =='+')||(stykket.charAt(i) == '-')||(stykket.charAt(i) == '*')) {
          String strengtal = stykket.substring(i+1, stykket.length());
          tal = StrToInt(strengtal);

          char test = stykket.charAt(i);
          switch(test){
            case '+': resultat += tal;
            break;
            case '-': resultat -= tal;
            break;
            case '*': resultat *= tal;
            break;
          }
          stykket = stykket.substring(0,i);
          i = stykket.length();
        }
      }
      return stykket;
    }

    public static int StrToInt(String subString) {
      int resultat;
      resultat = 0;
      try {
        resultat = Integer.valueOf(subString);
      } catch (NumberFormatException e) {
        println("Det der er ikke et tal");
      }
      return resultat;
    }
    public static boolean taltjek (String subString){
      int resultat = 0;
      try {
        resultat = Integer.valueOf(subString);
      } catch (NumberFormatException e)  {
        return false;
      }
      return true;
    }

我预计输出为 60,但输出为 25。

哨兵

代码从右到左计算字符串。每当遇到运算符时,它都会解析运算符右侧的子字符串并将该操作应用于变量“resultat”。

resultat未初始化,因此将是0如果第一个操作是乘法,它将保持0,因为x*0=0

如果我打印iresultat循环的每次迭代for,这是输出(加上我的评论)

10: 0     // input: 2     resultat = 0
 9: 0     // input: *2    resultat *= 2  =>  0
 8: 0     // input: 5
 7: 0     // input: 35
 6: 35    // input: +35   resultat += 35 => 35
 5: 35    // input: 2
 4: 35    // input: 22
 3: 13    // input: -22   resultat -= 22 => 13
 2: 13    // input: 9
 1: 22    // input: +9    resultat +=  9 => 22
25        // in your main method: resultat += 3 => 25

所以你的代码真正评估的是 0*2+35-22+9+3

我的修复建议是:

  1. 改为从左到右评估
  2. resultat用第一个运算符之前的值初始化

我不知道您的代码有什么要求,但恕我直言,表达式评估器的更好方法是使用递归方法。代码更简单(在我看来),您可以更轻松地实现运算符优先级。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在C中获取浮点数组的顶部索引并将其与存储在另一个数组中的字符串配对

来自分类Dev

将多于一个点的字符串转换为浮点数或整数?

来自分类Dev

如何将字符串转换为浮点数(如果它是一个确切的数字),而不仅以javascript中的数字开头

来自分类Dev

Ruby:如何将一个时间字符串转换为一个时间点的浮点数?

来自分类Dev

如何在Python中检测字符串并将其转换回正确的类型

来自分类Dev

Elixir一个将浮点数和整数都转换为位串的函数?

来自分类Dev

如何将逗号作为字符串的数字转换为Javascript中的浮点数

来自分类Dev

在monotouch中,如何将字符串转换为十进制/浮点数?

来自分类Dev

如何修复 ValueError :无法将字符串转换为浮点数:在 Python 中

来自分类Dev

如何将包含“/”的字符串转换为 Python 中的浮点数

来自分类Dev

我如何在 Python 中定义一个函数来将对象列转换为浮点数?

来自分类Dev

检测字符串列表中的数字并将其转换为int

来自分类Dev

如何识别浮点变量?获取 ValueError: 无法将字符串转换为浮点数:

来自分类Dev

Python将字符串转换为浮点数

来自分类Dev

formatFloat:将浮点数转换为字符串

来自分类Dev

将字符串转换为浮点数

来自分类Dev

在Python中将字符串转换为浮点数

来自分类Dev

字符串不会转换为浮点数

来自分类Dev

在 LINQ 中将字符串转换为浮点数

来自分类Dev

无法将字符串转换为浮点数

来自分类Dev

如何将字符串转换为浮点数?(温度转换器)

来自分类Dev

ValueError: 无法将字符串转换为浮点数---如何将字符串列表的列表转换为 numpy 数组类型浮点数?

来自分类Dev

Python2:将一组浮点数转换为字符串

来自分类Dev

将一维字符串数组转换为二维浮点数组

来自分类Dev

Python2:将一组浮点数转换为字符串

来自分类Dev

C ++银行项目;我如何从文件中读取字符串转换为浮点数并加总

来自分类Dev

如何将浮点数转换为字符串而不会丢失用户在 C 中输入的精度?

来自分类Dev

如何在python3中将浮点数和字符串转换为整数值

来自分类Dev

如何将包含逗号的字符串转换为等效的浮点数?

Related 相关文章

  1. 1

    如何在C中获取浮点数组的顶部索引并将其与存储在另一个数组中的字符串配对

  2. 2

    将多于一个点的字符串转换为浮点数或整数?

  3. 3

    如何将字符串转换为浮点数(如果它是一个确切的数字),而不仅以javascript中的数字开头

  4. 4

    Ruby:如何将一个时间字符串转换为一个时间点的浮点数?

  5. 5

    如何在Python中检测字符串并将其转换回正确的类型

  6. 6

    Elixir一个将浮点数和整数都转换为位串的函数?

  7. 7

    如何将逗号作为字符串的数字转换为Javascript中的浮点数

  8. 8

    在monotouch中,如何将字符串转换为十进制/浮点数?

  9. 9

    如何修复 ValueError :无法将字符串转换为浮点数:在 Python 中

  10. 10

    如何将包含“/”的字符串转换为 Python 中的浮点数

  11. 11

    我如何在 Python 中定义一个函数来将对象列转换为浮点数?

  12. 12

    检测字符串列表中的数字并将其转换为int

  13. 13

    如何识别浮点变量?获取 ValueError: 无法将字符串转换为浮点数:

  14. 14

    Python将字符串转换为浮点数

  15. 15

    formatFloat:将浮点数转换为字符串

  16. 16

    将字符串转换为浮点数

  17. 17

    在Python中将字符串转换为浮点数

  18. 18

    字符串不会转换为浮点数

  19. 19

    在 LINQ 中将字符串转换为浮点数

  20. 20

    无法将字符串转换为浮点数

  21. 21

    如何将字符串转换为浮点数?(温度转换器)

  22. 22

    ValueError: 无法将字符串转换为浮点数---如何将字符串列表的列表转换为 numpy 数组类型浮点数?

  23. 23

    Python2:将一组浮点数转换为字符串

  24. 24

    将一维字符串数组转换为二维浮点数组

  25. 25

    Python2:将一组浮点数转换为字符串

  26. 26

    C ++银行项目;我如何从文件中读取字符串转换为浮点数并加总

  27. 27

    如何将浮点数转换为字符串而不会丢失用户在 C 中输入的精度?

  28. 28

    如何在python3中将浮点数和字符串转换为整数值

  29. 29

    如何将包含逗号的字符串转换为等效的浮点数?

热门标签

归档