Javaの可変長引数
Javaでも可変長の引数が使用できるようです。
メモ代わりにサンプルプログラムを作成してみました。
単純に10進数から2進数に変換するというプログラムです。
ただ可変長引数を使用するので、一気に複数の10進数を指定できます。
引数の型に『...』と付けるだけという簡単仕様になっています。
関数側ではそれを配列的に扱えば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;
}
}