2017-01-11 3 views
-1

最初の値が0ではなく1に格納されている配列を作成するにはどうすればいいですか?行と列が1で始まらなければならない劇場座席プログラム0。私は過去2日間このことに固執しました![0] [0]の代わりにインデックス[1] [1]から2d Arrayを開始して2次元配列を作成する方法

int[] [] myarray = new int [2] [3]; 
+4

あなたはそうではありません。それがJavaの仕組みです。ディスプレイの値を内部的に調整します。 – chrylis

+1

私は整数の2次元配列を含むクラスを作成し、1から始まる索引付けを使用します。 –

答えて

1

これは、そのように

int型のようにそれを作成するには、1つのインデックスとする配列

public class OneIndexed2DArray { 
     int[][] indexedArray; 

     public OneIndexed2DArray(int row, int col) 
     { 
      indexedArray = new int[row + 1][col + 1]; 
     } 

     public int GetValue(int row, int col) throws ArrayIndexOutOfBoundsException 
     { 
      if(row == 0 || col == 0) 
      { 
       throw new ArrayIndexOutOfBoundsException(); 
      } 
      else 
       return indexedArray[row][col]; 
     } 

     public void SetValue(int row, int col, int value) throws ArrayIndexOutOfBoundsException 
     { 
      if(row == 0 || col == 0) 
      { 
       throw new ArrayIndexOutOfBoundsException(); 
      } 
      else 
       indexedArray[row][col] = value; 
     } 
    } 

としてそれを使用してJavaでorginal配列構造を模倣したいもので私の最高の推測です[] [] myarray =新しいint [2] [3]; 0として使用される場合

OneIndexed2DArray myarray = new OneIndexed2DArray(2, 3); 

がその値

int theValue = myarray.GetValue(1,1); 

を取得[1] 1

myarray.SetValue(1, 1, 1); 

を= [1]の値を設定し、例外をスローなります2D配列に0のインデックスがないかのように動作するインデックス。

myarray.SetValue(0, 1, 5) returns ArrayIndexOutOfBoundsException 
myarray.GetValue(1, 0) returns ArrayIndexOutOfBoundsException 

サイズなどの情報を得るためには、さらに機能を追加する必要がありますが、これで始めることができます。

関連する問題