Published Date : 2021年2月26日19:00

パート 6: 給与所得者の所得税と住民税を計算するAndroidアプリ
Part 6: Android App Calculates Income and Resident Taxes for Salaried Workers


This blog has an English translation


ニコニコ動画にアップした動画のまとめ記事です。

This is a summary blog post about a video I uploaded to NicoNico.

細かい部分は動画を参考にしてください。

Please refer to the video for details.


目次

Table of Contents




① 動画の説明
① Video Description



警告:

今回説明する給与所得者の所得税及び住民税を計算するツールは、あくまで簡易的なお遊び用のツールです。

正確な数値、計算方法は各自で調べて下さい。

このツールは大雑把に大体の見積りを計算して楽しむ為のツールです。

決して従業員の年末調整や個人の確定申告等に使用しないでください。

さらに、税金の計算方法は変更される場合があり、控除についても同様です。

また、控除や税金の計算方法が間違っている可能性もありますので、

あまり信用せずに、各自で調べてから実験してみてください。

このツールを使って何かしらの損害が発生したとしても、私は一切の責任を負いません。

Warning:

​The tool I'm going to show you for calculating income and residence taxes for salaried workers is just a simple tool for playing.

​Please check the exact number and calculation method by yourself.

​This tool is used to calculate rough estimates and enjoy them.

​Do not use for year-end adjustment of employees or for individual tax return.

In addition, the method of calculating taxes and deductions may change.

Also, there is a possibility that the deduction and tax calculation methods are incorrect.

Don't trust it too much, and test it yourself.

​I will not be liable for any damage caused by using this tool.

前回の続きです。

Continued from last time.


Responsive image

[CalculatorActivity.java]へ戻り、textView型の変数を宣言します。

Return to [CalculatorActivity.java] and declare a variable of type textView.

HorizontalScrollView型の変数を宣言します。必要なライブラリは自動でインポートされます。

Declare a variable of type HorizontalScrollView. The required libraries are automatically imported.

計算結果を表示するEditText型の変数を宣言します。

Declares a variable of type EditText that displays the result of the calculation.

計算に必要なString型の変数を宣言します。

Declare the required String variables for the computation.

計算記号の文字列だけを選り分ける為に必要なRegexの変数を宣言します。

Declare the Regex variable needed to extract only the mathematical operators.

Pattern型の変数を宣言します。

Declare a variable of type Pattern.

Matcher型の変数を宣言します。

Declare a variable of type Matcher.

計算結果の表示のための変数。

Variables for displaying calculation results.

画面表示から計算式を格納する為の変数。

A variable to store mathematical expressions from the screen display.

計算式から右辺と左辺を分けて、そして格納するStrings型の配列変数。

An array variable of type Strings that stores the left and right sides of the mathematical expressions.

Regexを使って抽出された計算記号の文字列を格納する変数。

A variable that stores the mathematical operators extracted using the regex.

抽出された計算記号の文字列を格納するList型変数。

A List variable that stores the extracted the mathematical operators.

先ほど宣言した変数を、レイアウトのIDを使ってインスタンス化していきます。

We instantiate the variable we just declared using the layout ID.

先ほど宣言した変数を、初期化していきます。

Initialize the variable We just declared.

クリックイベントリスナーに登録したメソッドに渡されるviewを使って、押されたボタンをインスタンス化します。

Instantiate the clicked button using the view passed to the method registered with the click event listener.

計算結果を表示するビューからテキストを取り出します。

Retrieve text from the view that displays the result of the calculation.

計算式の文字列を計算式を表示するビューから取り出します。

Retrieves the mathematical expressions from the view in which the expressions is displayed.

RegexをコンパイルしたPatternインスタンスのmatcherメソッドに取り出した数式を引数として渡して、計算記号を抽出します。

Extracts mathematical operators by passing the expression that is retrieved as an argument to the matcher method of the Pattern instance on which you compiled Regex.

計算記号を格納するリストを初期化します。

Initializes the list that stores mathematical operators.

While文を使って計算記号が見つかるまで記号を一つずつ取り出して、リストに格納していきます。

Use the While statement to retrieve operators one at a time and store them in the list until you find a operator.

計算式の文字列から計算記号以外を分けて配列に格納します。

Split the expression string with operators and store it in an array.

switch文を使ってボタンのIDから、どのボタンがクリックされたかを判別します。

Use a switch statement to determine which button was clicked from the ID of the button.

数字の零のボタンがクリックされたら式に零を追加する。

When the zero button of the number is clicked, zero is added to the expression.

case R.id.num0Btn:
    eqTextBox.setText(exp + "0");
    break;

数字の一のボタンがクリックされたら式に一を追加する。

When the one button of the number is clicked, one is added to the expression.

case R.id.num1Btn:
    eqTextBox.setText(exp + "1");
    break;

数字の二のボタンがクリックされたら式に二を追加する。

When the two button of the number is clicked, two is added to the expression.

case R.id.num2Btn:
    eqTextBox.setText(exp + "2");
    break;

数字の三のボタンがクリックされたら式に三を追加する。

When the three button of the number is clicked, three is added to the expression.

case R.id.num3Btn:
    eqTextBox.setText(exp + "3");
    break;

数字の四のボタンがクリックされたら式に四を追加する。

When the four button of the number is clicked, four is added to the expression.

case R.id.num4Btn:
    eqTextBox.setText(exp + "4");
    break;

数字の五のボタンがクリックされたら式に五を追加する。

When the five button of the number is clicked, five is added to the expression.

case R.id.num5Btn:
    eqTextBox.setText(exp + "5");
    break;

数字の六のボタンがクリックされたら式に六を追加する。

When the six button of the number is clicked, six is added to the expression.

case R.id.num6Btn:
    eqTextBox.setText(exp + "6");
    break;

数字の七のボタンがクリックされたら式に七を追加する。

When the seven button of the number is clicked, seven is added to the expression.

case R.id.num7Btn:
    eqTextBox.setText(exp + "7");
    break;

数字の八のボタンがクリックされたら式に八を追加する。

When the eight button of the number is clicked, eight is added to the expression.

case R.id.num8Btn:
    eqTextBox.setText(exp + "8");
    break;

数字の九のボタンがクリックされたら式に九を追加する。

When the nine button of the number is clicked, nine is added to the expression.

case R.id.num9Btn:
    eqTextBox.setText(exp + "9");
    break;

キャンセルボタンが押されたら、全てのテキストと変数を空にする。

When the Cancel button is clicked, empty all text and variables.

ドットは式の中のどちらかの数字に含まれていないなら式に追加する。

The dot is added to the expression if it is not included in one of the numbers in the expression.

キャンセルエントリーボタンの場合は計算記号より後の数字を消すようにする。

In the case of a cancel entry button, the number after the mathematical operator is erased.

デリートボタンは数式が一文字以上あるなら一文字消す。

The delete button deletes a single character if the expression contains more than one character.

割り算のボタンがクリックされたら、算術演算子が無いことを確認して、計算途中か計算結果が出ているかの場合で二通りに処理を分ける。

When the button of division is clicked, it is confirmed that there is no operator, and the processing is divided in two ways depending on whether the calculation is in progress or the result is out.

算術演算子が存在していて、それが割り算の演算子で無いなら、演算子を削除し、そして新たに割り算の記号を分割された式の一番目に加える。

If there is an operator and it is not a division operator, the operator is deleted and a new division sign is added to the first of the split expressions.

掛け算のボタンがクリックされた時も同様の処理を行います。

When the multiplication button is clicked, the same processing as described above is performed.

引き算のボタンも同様です。

It also the same the subtraction button is clicked.

足し算のボタンがクリックされた時も同様です。

The same process occurs when the addition button is clicked.

イコールボタンがクリックされたら、まず分割された式の数と最初の値を判定します。

When click the equals button, first check the first value and total number of items in the array of split expression.

if文の判定式がtrueなら、分割された式の一番目と二番目の数字の文字列からカンマを削除します。

If statement is true, remove the comma from the first and second number strings in the split expression.

算術演算子毎に文字列をFloat値に直してから計算を行い、その結果を変数に格納します。

For each mathematical operator, convert the string to a Float value, perform the calculation, and store the result in a variable.

そして計算式を表示しているテキストボックスを空にします。

Then empty the text box that displays the expression.

もし結果が空で無いなら、小数点以下の数字を確認して、全て0になっているなら小数点以下の部分を隠して画面に表示させます。

If the result is not empty, check the decimal places, and if all are zeros, hide the decimal places and display them on the screen.

そうでない場合は、小数点以下は三桁まで表示させます。

Otherwise, it displays up to three decimal places.

計算に使ったヴァリュー1とヴァリュー2にnullを代入します。

We assign null to value1 and value2 we used in the calculation.

switch文を抜けたら文字数に合わせて自動でスクロールビューの右側にフォーカスさせるようにします。

When you exit the switch statement, focus automatically on the right side of the scroll view based on the number of characters.

では電卓アクティビティの挙動を確かめてみましょう。

Let's see how the calculator activity behaves.


Responsive image

パート7へ続く。

Continue to Part 7.



以上です。お疲れ様です。

That's all. Thank you for your hard work.