0

を使って電卓(コードのみ)を作ろうとしているのStringTokenizerですが、迷ってしまいます。簡単な数学 (+-*) とその他の基本的ではない操作 (log、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]);
  }
}
4

1 に答える 1

0

まず、抽象的に考えなければなりません。問題を解決するためのプロセスを考えなければなりません。"5*10+15/12" をどのように解きますか? 小学校で問題を分解する方法をどのように教えられましたか? 問題を自分の頭の中で簡単なステップに分解する方法を考えてみてください。頭の中でこのプロセスをループ、構造、if ステートメント、ツリー、およびアルゴリズムに変換できます。

まず、「ops」変数は何にも割り当てられないため、while ループは何もしていません。最初に考える必要があるのは、操作 (この場合はアスタリスク、プラス、および除算) をこの文字列から取得する方法です: "5*10+15/12" をその opts 変数に入れ、それらをループできるようにします。

于 2012-04-26T22:14:19.187 に答える