paiza備忘録
文字列から数値をトリミングする関数
機能
入力値として与えられた空白区切りの任意の長さの文字列に対して、それぞれの数値を切り出して配列に格納する。
ex)「12 23 25 68 2 34」という文字列が渡されたら12、23、25、68、2、34という数値を配列に格納する。
プログラムの概要
プログラム中のコメント参照
※今回は数値が2桁までで設計しているが、3桁以上も対応させる場合にはtemp配列の大きさを大きくすればいい。
また、今回はtrimedに値を格納しているが、番兵の意味で最後に-1を代入させている。
プログラム
//空白区切りの入力から数値データを切り出す関数ver2 void trim( char *str, int *trimed, int len){ int i,j,k; char temp[3]; /* 2桁までの対応をするため。1つ多いのはnull文字用 */ j = k = 0; //文字列の長さ分ループを回す for(i=0;i<len;i++){ //空白が来た場合の処理 if(str[i] == ' '){ //積んである文字の後ろのゴミを切り離すため文字列終端文字nullを代入しておく temp[j] = '\0'; //tempは数字文字nullの構成になっており、これを数値化する trimed[k++] = atoi(temp); //文字列を空にしておく temp[0] = temp[1] = '\0'; //indexを先頭に戻す j = 0; //空白が来るまでは数値を文字としてtempに積んでいく }else if(str[i] != ' '){ temp[j++] = str[i]; } } trimed[k++] = atoi(temp); trimed[k] = -1; }
Androidアプリ開発:
現状
- 初回
進捗
- スタート画面と時間割ページのスクロール対応フラグメントの構築
コード部分
Main側のソースコード
public class MainActivity extends AppCompatActivity { private Spinner spinner; final private String spinnerItems[] = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //初期フラグメントの呼び出し MondayFragment firstFragment = new MondayFragment(); FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.add(R.id.fragment_container, firstFragment); transaction.commit(); spinner = findViewById(R.id.spinner); // ArrayAdapter ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, spinnerItems); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // spinner に adapter をセット spinner.setAdapter(adapter); // リスナーを登録 spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { // アイテムが選択された時 @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { //その曜日のfragmentを呼ぶ処理 } // アイテムが選択されなかった public void onNothingSelected(AdapterView<?> parent) { // } }); } }
フラグメントの使い方
MondayFragment firstFragment = new MondayFragment();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.add(R.id.fragment_container, firstFragment);
transaction.commit();
スピナーの使い方
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, spinnerItems); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter);
xml側的には普通のViewと同様に扱う。
- adapterを使って扱うデータ(今回はspinnerItems)を設定しインスタンスの生成。
- spinnerのメソッドsetAdapterにより、このadapterをスピナーにセットする。
成果
- ScrollViewの使い方
- Spinnerの使い方
- Fragmentの使い方
次回予定
- フラグメントの生成の分岐と時間割部分の詳細設計
- それぞれの科目部分についてのデータ管理部分