繁体   English   中英

使用StringTokenizer的Java控制台计算器

[英]Java console calculator using StringTokenizer

我正在尝试使用StringTokenizer制作一个计算器(仅代码),但我迷路了。 我必须使计算器具有进行简单数学运算(+-*)和其他一些不太基本的运算(对数,sin,tan,指数型)的可能性。 这段代码是基本数学的一个示例-我想先做基础知识,然后再使用方法添加其他函数。

但是,我不知道如何进行操作,我当时想也许可以通过开关来完成这项工作,但是使用BEMDAS会使情况变得复杂。 上面的代码只将操作数放在char数组中,将数字放在double数组中,所以我不知道如何继续。 如果有人可以解释我如何继续进行或指导我,我将不胜感激。

import java.util.StringTokenizer;
import java.io.*;

public class Calculator  {
  public static void main (String[] args) {     
    int i=0;
    int j=0;
    int n=0;
    int o=0;
    double num []= new double [100];
    char op[]=new char [100];
    String ops[]=new String [100];

    String x = "5*10+15/12";
    StringTokenizer st = new StringTokenizer(x, "*/-+", true);
    while(st.hasMoreTokens()){
      ops[j] =st.nextToken();
      j++;
    }

    for(i=0; i<j;i++){
      if(i%2==0){
        num[n]=Double.parseDouble(ops[i]);
        n++;
      }
      else{
        op[o]=ops[i].charAt(0);
        o++;
      }
    }

    for(i=0; i<n;i++)
      System.out.println(num[i]);

    for(i=0; i<o;i++)
      System.out.println(op[i]);
  }
}

首先,您必须抽象地思考,必须考虑解决问题的过程。 您如何解决“ 5 * 10 + 15/12”? 您是如何在小学时教过如何解决问题的? 考虑一下如何将问题分解为自己的简单步骤。 您将能够在头脑中将此过程转换为循环,结构,if语句,树和算法。

首先,“ ops”变量永远不会分配任何东西,因此您的while循环什么也不做。 您需要考虑的第一件事是如何获得运算符(在本例中为星号加号),并从以下字符串中将其分割:“ 5 * 10 + 15/12”到该opts变量中,以便您可以遍历它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM