こんにちはー。\(^o^)/
今回は最近学んでいるプログラミング言語Kotlinで簡単なアンドロイドアプリを作成しました。
アプリの機能
ドグ付きチェーンによって品物が搬送されロータリー機械へ入っていく状況を考えます。ロータリー機械の特定のポケット番号と特定のドグ付きチェーン番号を一致させたいとき、ロータリー機械をあと何周すれば一致するかを算出します。
入力値について
まず、機械構成としてロータリー機械の全ポケット数、チェーンの全ドグ数を入力します。
次にロータリー機械の特定のポケット番号に入るチェーンドグ位置にある「現在のドグ番号」を入力し、最後にそのチェーンドグ位置に何番のドグが来てほしいいか「目標とするドグ番号」を入力します。
以上、合計4つの入力値があります。
結果の出力
ボタンを押すことで、ロータリー機械をあと何周すれば一致するかを算出し、一番下のtextViewに書き出します。
画面構成:activity_main.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <TextView android:id="@+id/textView_total_heads" android:layout_width="200dp" android:layout_height="30dp" android:layout_marginStart="16dp" android:layout_marginTop="24dp" android:text="ヘッド数" android:textAlignment="viewStart" android:textSize="24sp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <TextView android:id="@+id/textView_total_dogs" android:layout_width="200dp" android:layout_height="30dp" android:layout_marginStart="16dp" android:layout_marginTop="20dp" android:text="チェーンドグ数" android:textAlignment="viewStart" android:textSize="24sp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/textView_total_heads" /> <TextView android:id="@+id/textView_current_dog" android:layout_width="203dp" android:layout_height="66dp" android:layout_marginStart="16dp" android:layout_marginTop="20dp" android:text="チェーンドグNO.現在値" android:textAlignment="viewStart" android:textSize="24sp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/textView_total_dogs" /> <TextView android:id="@+id/textView_target_dog" android:layout_width="204dp" android:layout_height="66dp" android:layout_marginStart="16dp" android:layout_marginTop="16dp" android:text="チェーンドグNO.目標値" android:textAlignment="viewStart" android:textSize="24sp" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/textView_current_dog" /> <EditText android:id="@+id/editText_total_heads" android:layout_width="100dp" android:layout_height="40dp" android:layout_marginStart="28dp" android:layout_marginTop="24dp" android:ems="10" android:inputType="number" android:text="12" app:layout_constraintStart_toEndOf="@+id/textView_total_heads" app:layout_constraintTop_toTopOf="parent" /> <EditText android:id="@+id/editText_total_dogs" android:layout_width="100dp" android:layout_height="40dp" android:layout_marginStart="32dp" android:layout_marginTop="16dp" android:ems="10" android:inputType="number" android:text="223" app:layout_constraintStart_toEndOf="@+id/textView_total_dogs" app:layout_constraintTop_toBottomOf="@+id/editText_total_heads" /> <EditText android:id="@+id/editText_current_dog" android:layout_width="100dp" android:layout_height="40dp" android:layout_marginStart="28dp" android:layout_marginTop="28dp" android:ems="10" android:inputType="number" android:text="1" app:layout_constraintStart_toEndOf="@+id/textView_current_dog" app:layout_constraintTop_toBottomOf="@+id/editText_total_dogs" /> <EditText android:id="@+id/editText_target_dog" android:layout_width="100dp" android:layout_height="40dp" android:layout_marginStart="28dp" android:layout_marginTop="44dp" android:ems="10" android:inputType="number" android:text="17" app:layout_constraintStart_toEndOf="@+id/textView_target_dog" app:layout_constraintTop_toBottomOf="@+id/editText_current_dog" /> <Button android:id="@+id/button_solver" android:layout_width="168dp" android:layout_height="91dp" android:layout_marginTop="76dp" android:onClick="onButtonClick" android:text="計算" android:textSize="36sp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/textView_target_dog" /> <TextView android:id="@+id/textView_rounds" android:layout_width="300dp" android:layout_height="120dp" android:layout_marginTop="48dp" android:text="計算ボタンを押すと\n必要なヘッド回転回数が\n算出されます。" android:textAlignment="center" android:textSize="24sp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.495" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/button_solver" app:layout_constraintVertical_bias="0.479" /> </androidx.constraintlayout.widget.ConstraintLayout> |
内部演算:MainActivity.kt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
package com.example.test001 import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.text.Editable import android.view.View import kotlinx.android.synthetic.main.activity_main.* import java.util.concurrent.TimeUnit class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } fun onButtonClick(v: View){ var total_heads: Int = editText_total_heads.text.toString().toInt() var total_dogs: Int = editText_total_dogs.text.toString().toInt() var current_dog: Int = editText_current_dog.text.toString().toInt() var target_dog: Int = editText_target_dog.text.toString().toInt() var rounds: Int = 0 while (true){ if (current_dog > total_dogs){ current_dog -= total_dogs } if (current_dog == target_dog) break rounds +=1 current_dog += total_heads } textView_rounds.text = "ヘッドをあと $rounds 回転 させる必要があります。" } } |
strings.xml
画面構成を作成したときに、追加したボタンなどにエラーマークがでるので、ソレを消すためにこのファイルを少しいじると修正できるのですが、やらなくても動きますので今回は何もいじっていません。
1 2 3 |
<resources> <string name="app_name">Dog To Head</string> </resources> |