有 Java 编程相关的问题?

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

java计算器的输入是字符串

我想知道如何迭代一个字符串,这是一个类似“34+35=”的计算 循环遍历每个字符,如果该字符是数字,下一个字符也是数字等,则将其添加到字符串中

import java.io.*;

public class SimpleTest{

   static double operand1;
   static char operator;
   static  boolean isnum;
   static double result;
   static String calc = "45+45=";
   static String in = "";
   public static void main(String[] argv){

     SimpleCalculator calculator = new SimpleCalculator();


        while (calculator.c != '=')
        {
           in =  calculator.input(calc,operand1);
            calculator.parsevalue(operand1, in);
        }


         System.out.println(calculator.getResult());
        }

}

public String input(String calc, double operand1)
{
String in = "";
//66
//++2
        for (int i = 0; i < calc.length(); i++)
        {
        c = calc.charAt(i);
         String  characterString = Character.toString(c);
        if (Character.isDigit(calc.charAt(i)))
        {
         while (Character.isDigit(calc.charAt(i+1)))
         {
                characterString = characterString + Character.toString(calc.charAt(i+1));
                i++;
         }

        in = characterString;
        }
        parsevalue(operand1,in);

        }
return in;
}

  public void parsevalue(double operand1, String in)
  {

String characterString = in;
            try
            {

                setOperand(Double.parseDouble(characterString));

                   if (flag == 0)

                    {

                        operand1 = (Double.parseDouble(characterString));
                        result = operand1;
                        flag = 1;
                    }

                    getResult();

              }

            catch (Exception e)
            {
                try
                {
                    operator = c;
                }
                catch (Exception e2)
                {
                    System.out.println("Enter a number");
                }
            }
        }

   public void setOperator(char operator){
     this.operator = operator;
   }

   public char getOperator(){
     return operator;
   }

   public void setOperand(double operand){

      this.operand = operand;
   }

   public double getOperand(){

      return operand;
   }

    public double getResult(){

      if (getOperator() == '+')
          {
             result = (result + getOperand());
          }
             if (getOperator() == '-')
          {
             result = (result - getOperand());
          }
          if (getOperator() == '*')
          {
             result = (result * getOperand());
          }
          if (getOperator() == '/')
          {
             if (getOperand() == 0)
             {
                System.out.println("Cannot divide by zero");
             }
             result = (result / getOperand());
          }

          return result;
    }

共 (3) 个答案

  1. # 1 楼答案

    如果它总是采用XXX+YYY=格式,那么应该使用类String中的方法replace去掉“=”,split得到两个数字并将其解析为整数,然后计算值

  2. # 2 楼答案

    除了StringInteger类中可以帮助您的函数之外,我建议您阅读Polish notationReverse Polish notation以及如何使用它们进行计算。这可能不是你的家庭作业所必需的,但了解它们以及它们与你正在做的事情之间的关系仍然是一个好主意

  3. # 3 楼答案

    我建议您熟悉使用Oracle提供的优秀Javadoc:String class Javadoc

    特别是,您可能会发现charAt()方法很有用