N2-Works
WEB企画・制作/システム開発 大阪拠点

Javaの可変長引数

Javaでも可変長の引数が使用できるようです。

メモ代わりにサンプルプログラムを作成してみました。

単純に10進数から2進数に変換するというプログラムです。

ただ可変長引数を使用するので、一気に複数の10進数を指定できます。

Javaの可変長引数

引数の型に『...』と付けるだけという簡単仕様になっています。

関数側ではそれを配列的に扱えばOKです。

Activity

package net.n2works.AndroidTest;

import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.LinearLayout.LayoutParams;

public class AndroidTest extends Activity
{
  /**
   * Component
   */
  // Layout
  LinearLayout mLayout;
  // テキスト表示
  TextView mTv;

  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);

    // Viewの設定
    mLayout = new LinearLayout(getApplicationContext());
    LayoutParams params = new LayoutParams(
      LayoutParams.FILL_PARENT,
      LayoutParams.FILL_PARENT
    );
    mLayout.setLayoutParams(params);
    mLayout.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL);
    setContentView(mLayout);

    // テキストの表示
    mTv = new TextView(getApplicationContext());
    mLayout.addView(mTv);
    params = new LayoutParams(
      LayoutParams.WRAP_CONTENT,
      LayoutParams.WRAP_CONTENT
    );
    mTv.setLayoutParams(params);
    mTv.setText(ConvertDecimalToBinary(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024));
  }

  private String ConvertDecimalToBinary(int... decimal)
  {
    String ret = "";
    String b = "";
    int num = 0;
    int tmp = 0;
    int bin = 0;

    for (int i = 0; i < decimal.length; i++) {
      num = decimal[i];
      ret += "["+String.valueOf(decimal[i])+"]->";
      for (;;) {
        tmp = num / 2;
        bin = num % 2;
        b = String.valueOf(bin)+b;
        if (tmp <= 1) {
          b = String.valueOf(tmp)+b;
          if (b.length() % 4 != 0) {
            for (int j = 0; j < b.length() % 4; j++) {
              b = "0"+b;
            }
          }
          b = "B"+b;
          break;
        }
        num /= 2;
      }
      ret += b+"\n";
      b = "";
    }
    return ret;
  }
}

 

[Android]2011年02月14日 17時35分30秒

※1000文字以内で入力してください

captcha
TOP