# 2021.07.15(木)③④ ###### tags: `AN25` `授業ノート` 電卓計算手順 1. 数値1入力 → ディスプレイの右から数字を追加表示 2. 演算子入力(+ - * /) 3. 数値2入力 → ディスプレイをクリアし、右から数字を追加 4. =入力 → 計算結果をディスプレイへ表示 * 数字および小数点(.) * numKeyOnClick()Methodが呼ばれる(先生Ver) * handleClickNumber(宮Ver) * 数字を入力できるようにする 1. numKeyOnClick()メソッド機能 ① 入力が数字キー(0~9) 入力済の後ろに追加 ② 入力が小数点(.) * 最初の入力なら"0."表示 * 最初でなければ、入力済みの後ろに追加 * 小数点は重複入力できない * 数字Buttonテキスト(0~9)を取得して、入力済みの後ろに追加する work area : strTemp(初期値Null) 入力キーのテキストを取得する方法 ```java= public void numKeyOnClick(View V(←ボタンのプロパティ)){ Stirng s = (String)((Button)V).getText(); //取得したテキストをワークに連結する } ``` :::spoiler layout.xml ```xml= <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" android:orientation="vertical"> <TextView android:id="@+id/DisplayPanel" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="30dp" android:textColor="#000000" android:background="#ffffff" android:gravity="right" android:textSize="48sp" android:text="0"/> <TableLayout android:layout_width="match_parent" android:layout_height="match_parent" > <TableRow android:id="@+id/tableRow1" android:layout_weight="1" android:layout_width="wrap_content" android:layout_height="wrap_content"> <Button android:id="@+id/KeyCopy" android:layout_width="80dp" android:layout_height="match_parent" android:layout_weight="1" android:textSize="24sp" android:text="Copy" android:onClick="handleClickFunction" /> <Button android:id="@+id/KeyClear" android:layout_width="80dp" android:layout_height="match_parent" android:layout_weight="1" android:textSize="24sp" android:text="C" android:onClick="handleClickFunction" /> <Button android:id="@+id/KeyAllClear" android:layout_width="80dp" android:layout_height="match_parent" android:layout_weight="1" android:textSize="24sp" android:text="AC" android:onClick="handleClickFunction" /> <Button android:id="@+id/KeyBackSpace" android:layout_width="80dp" android:layout_height="match_parent" android:layout_weight="1" android:textSize="24sp" android:text="BS" android:onClick="handleClickFunction" /> </TableRow> <TableRow android:id="@+id/tableRow2" android:layout_weight="1" android:layout_width="wrap_content" android:layout_height="wrap_content" > <Button android:id="@+id/Key7" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:textSize="24sp" android:text="7" android:onClick="handleClickNumber" /> <Button android:id="@+id/Key8" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:textSize="24sp" android:text="8" android:onClick="handleClickNumber" /> <Button android:id="@+id/Key9" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:textSize="24sp" android:text="9" android:onClick="handleClickNumber" /> <Button android:id="@+id/KeyDivision" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:textSize="24sp" android:text="/" android:onClick="handleClickOperator" /> </TableRow> <TableRow android:id="@+id/tableRow3" android:layout_weight="1" android:layout_width="wrap_content" android:layout_height="wrap_content" > <Button android:id="@+id/Key4" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:textSize="24sp" android:text="4" android:onClick="handleClickNumber" /> <Button android:id="@+id/Key5" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:textSize="24sp" android:text="5" android:onClick="handleClickNumber" /> <Button android:id="@+id/Key6" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:textSize="24sp" android:text="6" android:onClick="handleClickNumber" /> <Button android:id="@+id/KeyMultiple" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:textSize="24sp" android:text="*" android:onClick="handleClickOperator" /> </TableRow> <TableRow android:id="@+id/tableRow4" android:layout_weight="1" android:layout_width="wrap_content" android:layout_height="wrap_content" > <Button android:id="@+id/Key1" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:textSize="24sp" android:text="1" android:onClick="handleClickNumber" /> <Button android:id="@+id/Key2" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:textSize="24sp" android:text="2" android:onClick="handleClickNumber" /> <Button android:id="@+id/Key3" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:textSize="24sp" android:text="3" android:onClick="handleClickNumber" /> <Button android:id="@+id/KeySubtraction" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:textSize="24sp" android:text="-" android:onClick="handleClickOperator" /> </TableRow> <TableRow android:id="@+id/tableRow5" android:layout_weight="1" android:layout_width="wrap_content" android:layout_height="wrap_content" > <Button android:id="@+id/Key0" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:textSize="24sp" android:text="0" android:onClick="handleClickNumber" /> <Button android:id="@+id/KeyDot" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:textSize="24sp" android:text="." android:onClick="handleClickNumber" /> <Button android:id="@+id/KeyEq" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:textSize="24sp" android:text="=" android:onClick="handleClickOperator" /> <Button android:id="@+id/KeyAddition" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:textSize="24sp" android:text="+" android:onClick="handleClickOperator" /> </TableRow> </TableLayout> </LinearLayout> ``` ::: :::spoiler MainActivity.java ```java= package nhs00157.hal.ac.mycalculator; import androidx.appcompat.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.os.Bundle; public class MainActivity extends AppCompatActivity { private TextView DisplayPanel; String mount_value = ""; String initial_value; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); DisplayPanel = (TextView)findViewById(R.id.DisplayPanel); initial_value = (String)DisplayPanel.getText(); } public void handleClickNumber(View props){ if (initial_value.equals('0')) DisplayPanel.setText(""); String button_value = (String)((Button) props).getText(); mount_value = mount_value + button_value; DisplayPanel.setText(mount_value); } } ``` ::: <span style="font-size: 200px">やすいくんいるやん</span> わろた。課題なう。まねして痛いめみたところ 修正した。なるほ 昔の人だから許してあげて wかわいそう 引退すれば後輩が幸せになる 中谷先生は引退するね。したがってるね 40さい後半ぐらい?にみえる 若い奥さんいるのがずるい 高専かなんかで教えてた生徒と結婚したよね。 資料よ ムキムキではない俺たちは性欲弱いかな 適当にババッとは書いてある そんな時間かかるもんではない笑 あー確かにむずいね。知識がまずないわし むずいね 課題やります コピっても動かんで、参考にするかな 全部コピレバ動くのか xmlファイルだけ配られてて、みやのコピったことない人は動く オプションは当たり前に動かんけど そうだw逆 とりあえずやってるなう 徹夜になりそうだったら萎える お、どれぐらいで終わるんか気になる 今どこまでやってあるん オプションどころか、普通の課題もできてない感じか あー夏休み前のやつか それは強い react nativeと雰囲気にとる? xmlとjavaファリウが同じところにかけるんか 断然良いね 同じやね!やりますか課題 Propsの受け渡しもできるんやね 課題なう?このコードまねしないほうがいいよ keyIdとか全部買えてるからね 先生の変数宣言とか気に食わないまじで おれは容赦ない 早く引退しろって思ってる 中谷先生とか まだ若いよねあのひと そんな若い奥さん?でもこどももちいさいよね やば変態やん ムキムキは性欲強いもん 弱くはない 企画書書いた? まじか俺寝れんなw なんも書いてない NFTとかどこから書けばいいんやろ しくみとか 全然構想練ってない おれも知識ないよまったく かだいやりますか 資料をこぴル? そうなの> 答えくばってるとか言ってたからうごくんやないの そゆこと いや逆やろ?Javaファイルを配ってるやない? オプションどうしようかなおけい おれ一瞬で終わらせて見せる ここに書いてるコードはカンマと0割と小数計算ができてないだけかな このコード7月のやつだからね XMLを授業でかいたその日にここまで書いておいたやつ だから全部無視してプログラム書いてる いやー1ページに全部ロじっく書けるからreactnativeのほうが断然良い ページが分かれるとやりにくい でも仕組みは全く同じ屋根 そうそう マジでreactと同じ propsの概念とかもほぼ同じ public void onClickNumber(View props) { String buttonValue = (String)((Button) props).getText(); propsってかいてるもんおれ ## 雑談 (0→やまぴ 1→みや 2→やすい 3→りょうくん 4→アミカ 5→やの 6→山田) :::success 使ってみたかっただけ ::: :::spoiler 電卓レイアウト.xmlくじ はずれ :-1: ::: :::spoiler 電卓レイアウト.xmlくじ あたり :+1: ::: :::spoiler 電卓計算機能.java ```java= package nhs00157.hal.ac.mycalculator; import androidx.appcompat.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.os.Bundle; public class MainActivity extends AppCompatActivity { private TextView DisplayPanel; String mount_value = ""; String operator = ""; String copy_value = ""; String left_side = ""; String right_side = ""; String result = ""; float resultInt; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); DisplayPanel = (TextView)findViewById(R.id.DisplayPanel); } public void handleClickNumber(View props) { String button_value = (String)((Button) props).getText(); if (button_value.equals(".")) { if (mount_value.indexOf(".") != -1) { return; } else if (mount_value.equals("")) { mount_value = "0."; DisplayPanel.setText("0."); return; } else { mount_value = mount_value + button_value; DisplayPanel.setText(mount_value); return; } } if (mount_value.equals("")) { if (button_value.equals("0")) { return; } mount_value = button_value; DisplayPanel.setText(button_value); return; } mount_value = mount_value + button_value; DisplayPanel.setText(mount_value); } public void handleClickFunction(View props) { int button_value = props.getId(); switch (button_value) { case R.id.KeyCopy: copy_value = mount_value; break; case R.id.KeyClear: operator = ""; break; case R.id.KeyAllClear: mount_value = ""; operator = ""; copy_value = ""; left_side = ""; right_side = ""; DisplayPanel.setText("0"); break; case R.id.KeyBackSpace: if (mount_value.length() == 1) { mount_value = ""; DisplayPanel.setText("0"); break; } String new_value = mount_value.substring(0, mount_value.length()-1); mount_value = new_value; DisplayPanel.setText(new_value); break; } } public void handleClickOperator(View props) { int button_value = props.getId(); switch (button_value) { case R.id.KeyDivision: operator = "/"; left_side = mount_value; mount_value = ""; break; case R.id.KeyMultiple: operator = "*"; left_side = mount_value; mount_value = ""; break; case R.id.KeySubtraction: operator = "-"; left_side = mount_value; mount_value = ""; break; case R.id.KeyAddition: operator = "+"; left_side = mount_value; mount_value = ""; break; case R.id.KeyEq: if (left_side.equals("")) { break; } else { right_side = mount_value; float left = Float.parseFloat(left_side); // Floatだめですね float right = Float.parseFloat(right_side); switch (operator) { case "/": resultInt = left / right; break; case "*": resultInt = left * right; break; case "-": resultInt = left - right; break; case "+": resultInt = left + right; break; } result = new Float(resultInt).toString(); DisplayPanel.setText(result); mount_value = ""; operator = ""; copy_value = ""; left_side = ""; right_side = ""; result = ""; break; } } } } ``` ::: 1.helloworld 2.こんにちは 1.hahnainainknvkankvnak 要するに必ずrightに数字が入っている必要はない leftに数字が入っている状態でのeqはleftを表示 leftに数字が入っていてoperatorにも入っていてrightには入っていない場合 * +の場合はleft + left * -の場合 left - left * *の場合 left * left * ÷の場合 left ÷ leftになる * eqを押しただけ繰り返される --- <span style="color: #ff3333">aaa</span>
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up