私は、xとy座標の合計を持っていると私は平均値を計算する必要があります
float [][] sums = new float[n][2];
例えば、私の配列で構成されています。
{ [ 8,6 ],
[ 4,2 ] }
2に分割した後:
{ [ 4,3 ],
[ 2,1 ] }
私はループでこれを行うことができますが、1つの機能でそれを行うことが可能となるのだろうか。
あなたは、単に関数にループのためにあなたをカプセル化し、それを呼び出すことができます。
import java.util.Arrays;
void setup(){
float [][] sums = new float[][]{ { 8,6 },
{ 4,2 } };
print("pre: ");
System.out.println(Arrays.deepToString(sums));
matMul(sums,0.5);
print("post:");
System.out.println(Arrays.deepToString(sums));
}
void matMul(float[][] data,float multiplier){
for(int y = 0; y < data.length; y++){
for(int x = 0; x < data[y].length; x++){
data[x][y] *= multiplier;
}
}
}
あなただけの機能を使い始めるしている場合、ここでいくつかのポインタです。
関数が行うことができます最も簡単な方法は、命令のカプセル化束である、ないは機能外部から任意のデータを読み込み、任意のデータを返さないことを可能にします。
ここでは非常に単純な/退屈な例は次のとおりです。
void sayHello(){
println("hello");
}
ポイントは、それが構文に慣れることです。機能があります:
- (戻り)タイプ:関数が結果を返す場合、結果のどのようなことでしょうか?(番号、テキスト、オブジェクト、などの文字列が)、それは単純になりません
void
- 名前(ので、我々はそれを呼び出すことができます)
- 括弧内の引数(0以上)、各(ローカル変数に類似)のタイプと名前を有します
- でdelinieated体
{
および}
記号:このブロック内で定義され、このすべてが(どちらかといえば、返された何を除いて)このブロックにのみ表示されます。これは、関数のスコープとして知られています
あなたはおそらくすでに結果を返さない関数を定義しました:void setup(){}
、void draw(){}
あなたはprobavlyすでに前に関数を呼び出しました:(例えばparanthesisに(もしあれば)の名前と引数を使用しprintln("hi");
、point(50,50);
、noCursor();
、など)
入力の合計:ここでは2つの入力を受け取り、1つの出力を返す関数の簡単な例です:
int sum(int a, int b){
return a+b;
}
代わりに、void
我々の結果を返すint
タイプと引数aとbという名前の整数のカップルです。唯一の他の余計な事はあるreturn
(あなたがそれを推測)結果を返す(機能ブロックを終了)するために使用するキーワード。
関数を呼び出すここでは基本的な例:
void setup(){
println(add(2,2));
println(add(4,4));
}
int add(int a, int b){
return a + b;
}
あなたがもっと読みたい場合は、チェックアウトケビン・ワークマンの作成機能の処理チュートリアル
裸の心にボイド方法は、関数への引数として渡す配列参照を変換します。あなたが入力されたデータを変更したい、まだ結果を返さない状況があるかもしれません。そのような場合などには、あなたはどちらか、事前に配列をコピーし、コピーを渡し、またはあなたのためのコピーを作成する機能のバージョンを持つことができます。
import java.util.Arrays;
void setup(){
float [][] sums = new float[][]{ { 8,6 },
{ 4,2 } };
print("sums: ");
System.out.println(Arrays.deepToString(sums));
float[][] result = matMul(sums,0.5);
print("result: ");
System.out.println(Arrays.deepToString(result));
print("original:");
System.out.println(Arrays.deepToString(sums));
}
float[][] matMul(float[][] data,float multiplier){
// check input data
if(data == null || data.length == 0){
println("no data to multiply, returning null");
return null;
}
// make another array of the same shape
float[][] result = new float[data.length][data[0].length];
// do the multiplcation, storing the result into the duplicate array
for(int y = 0; y < data.length; y++){
for(int x = 0; x < data[y].length; x++){
result[x][y] = data[x][y] * multiplier;
}
}
// return the result
return result;
}
機能の開始時にお知らせいくつかのチェック:一般的にはそれだけの場合には、入ってくるvalidataデータに良いアイデアだし、どのようなエラーを考え出すくらいに費やしwithouth(問題を解決するために簡単にそれを行いますメッセージを表示手段)。