解决表达式的输出未按预期进行

时间:2015-12-10 07:40:37

标签: java string

  

给定一个表示简单算术表达式的字符串,求解它并返回其整数值。表达式由两个数字组成,数字之间带有+或 - 运算符,即x + y或x-y形式,其中x和y不是负数

MyApproach

我创建了NewString并存储了第一个字符串,直到操作符没有到来。我将操作符放在字符位置。我创建了第二个字符串并将其余的字符串存储到新的String.I然后将它们转换为数字使用parseInt.And然后我添加了数字。

我想做什么123 + 82 = 205

我正在做123 + 43 + 82 = 248.我无法弄清楚如何定位角色。

  

任何人都可以指导我做错了吗?

public int solve(String str)
{
  String strnew1="";
  String strnew2="";
  int i=0;
  char ch1=str.charAt(i);
  while((ch1>=48)&&(ch1<=57))
  {
      strnew=strnew+ch1;
      i++;
  }
  int p=str.charAt(i);
  i++;

  while((ch1>=48)&&(ch1<=57))
  {
      strnew2=strnew2+ch1;
      i++;
      if(i==str.length())
      {
          break;
      }


  }
  int n1=Integer.parseInt(strnew1);
  int n2=Integer.parseInt(strnew2);
  n1=n1+p+n2;
  return n1;

}

测试用例结果。

  Parameters          Actual Output   ExpectedOutput

  123+82              248             205

3 个答案:

答案 0 :(得分:1)

这是完成任务的好方法。基本上,你迭代直到你找到'+'r' - '符号,同时将字符附加到字符串。现在保持一个布尔值,告诉您在到达符号时添加或减去并设置此值。现在,遍历运算符符号并将字符附加到另一个字符串。最后,将它们解析为整数,加/减它们并返回结果。

 public static int Solve(String input) //Assume input="100+50" for eg.
    {
        int cnt=0;
        boolean op=false; //Default set to subtract
        String raw_a="", raw_b="";
        while(input.charAt(cnt)!='+')
            raw_a+=input.charAt(cnt++); //The first part
        if(input.charAt(cnt)=='+') //setting the operation
            op=true;
        cnt++;
        while(cnt!=input.length())
            raw_b+=input.charAt(cnt++); //the second part
        int a=Integer.parseInt(raw_a), b=Integer.parseInt(raw_b); //parsing them
        int ans =op? a+b: a-b; //If true then add else subtract
        return ans; //Return the ans
    }

答案 1 :(得分:0)

+ - &gt;的ASCII值是多少? 43

24820543之间有什么区别。

弄错了?

您实际上并没有添加这两个数字,而是使用运算符的ASCII值添加这两个数字。

你应该做的是。

if(p == '+')//check if it is a addition
{
 sum = n1 + n2;
}
else
 sum = n1 - n2;

答案 2 :(得分:0)

你不能像这样使用这个算子。

好吧,你添加

  int p=str.charAt(i);

如果charAt(i)是'+'符号,则通过隐式地将char转换为int来添加额外的43('+'== ascii 43)。

更好地定义2个案例('+'/' - ')并使用运算符:

if (p == 43) { //or p == '+'
    return n1 + n2;
} else if (p == 45) {  //or p == '-'
    return n1 - n2
}
return -1; //undefined