まぁ1時間ぐらいで作れるだろうと軽い気持ちではじめたんですが・・・・
以外にめんどくさい

androidの技術的にはなんら難しいことはしていないんですが
今回作ったのはandroidにデフォルトで入ってる電卓とおんなじ機能にしました。
式を入力して一気に計算させるタイプです。
2+3×4-5÷-3 のような式を入力すると答えを出してくれるタイプです。
これを計算する処理がめんどくさかった

というのも、ネット探せばすぐソースが出てきそうなものですが、無駄に意地をはって処理を全部自分で考えてつくったので、結局つくるのに半日くらいかかってしまいました(;´▽`A``
如何せんオリジナルの処理なので以下のように汚いコードになってしまいました

for(int i = 0;s1.hasNext();){ // +でトークン化
s = s1.next();
sub.clear();
if(s.length() != 1){
sum.add(s);
s2 = new Scanner(sum.get(i));
s2.useDelimiter(" \\-");
for(int j = 0;s2.hasNext();){ // -でトークン化
s = s2.next();
mul.clear();
if(s.length() != 1){
sub.add(s);
s3 = new Scanner(sub.get(j));
s3.useDelimiter("×");
for(int l = 0;s3.hasNext();){ // *でトークン化
・・・・・・・・・・・・ (以下汚いコードが続く)
式を+、-、×、÷で分解していって計算しているのですが果たして最適なやり方かどうかは謎です。
今回はあまりandroidのテクニックをつかうものじゃなかったので、Javaもandroidも初めてという人のためにちょっと使えそうなテクニックを。
使うボタンが多い時は、以下のようにすると楽です。
// ボタンのidを全部入れておく
int[] buttons = {
R.id.zero,R.id.one,R.id.two,R.id.three,R.id.four,R.id.five,
R.id.six,R.id.seven,R.id.eight,R.id.nine,R.id.div_bottun,
R.id.mul_button,R.id.sub_button,R.id.sum_button,R.id.dot,
R.id.equal_button,R.id.all_clear,R.id.clear
};
// ボタンを拡張forループでリスナーに一括登録
Button b;
for(int id : buttons){
b = (Button)findViewById(id);
b.setOnClickListener(this);
}
今回はたったこれだけですがこれからもっとましなもの書けるように頑張ります

そろそろアプリを作ろう!