例えばこの部分 array[x, y] = number; if (x < 0) { x = -x; } 配列の添え字が負になることはないのですから、 xを添え字に使った後で負かどうか判定するというのは ロジックとしておかしいですね。 まあ何がどうなるのが正解かを知らないので、 「どうすればいいか」は私には答えられませんが。