2017-01-11 7 views
-1

Wie kann ich ein Array erstellen, wo der erste Wert nicht bei 0 gespeichert wird, sondern bei 1. Dies ist für a Theaterbestuhlungsprogramm, wo die Reihen und die Spalten bei 1 nicht 0 beginnen müssen. Bitte helfen Sie! Ich bin auf diesem für die letzten 2 Tage festgefahren worden !!Wie kann ich und 2d Array aus Index [1] [1] anstelle von [0] [0]

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

Sie nicht. So funktioniert Java. Ändern Sie intern die Anzeigewerte. – chrylis

+1

Ich würde eine Klasse erstellen, die ein 2D-Array von Ganzzahlen enthält und Indexierung ab 1 verwendet –

Antwort

1

Dies ist meine beste Vermutung an, was Sie wollen die ursprüngliche Array-Struktur in Java imitieren sie als 1 indiziertes Array mit

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; 
     } 
    } 

es dann schaffen, wie so

int [] [] myarray = neuer int [2] [3];

wird

OneIndexed2DArray myarray = new OneIndexed2DArray(2, 3); 

auf einen Wert [1] [1] = 1

myarray.SetValue(1, 1, 1); 

Erhalten Sie diesen Wert

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

Löst eine Ausnahme aus, wenn 0 als ein verwendet wird, Index, um sich so zu verhalten, als hätte das 2D-Array keinen Index

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

Sie müssen mehr Funktionalität hinzufügen, um Dinge wie die Größe usw. zu bekommen, aber das sollte Ihnen den Anfang machen.