Rimozione dei vincoli dell'array Java

0

Java arrays only allow subscripts to range between 0 and N-1 for an array of size N.

The class below aims to remove that constraint by allowing the class user to specify the valid subscripts for a one dimensional array of integers.

public class BoundedIntArray {

 private int[] array;

 // further state required here

 public BoundedIntArray() {…}

 public BoundedIntArray(int high) {…}

 public BoundedIntArray(int low, int high) {…}



 public int length() {…}

 public int getElement(int index) {…}

 public void putElement(int index, int value) {…}

 public void resize(int low, int high) {…}

}

Questa è una domanda che mi è stata data in un recente esame. Sto faticando a capire bene quale sia il problema e cosa stia cercando di ottenere.

Cosa c'è che non va con il solo intervallo tra 0 e N-1? Perché dovresti voler superare la dimensione dell'array e andare oltre N o < 0?

Che cosa basso e alto si riferiscono a?

Queste sono le domande d'esame:

a). The class needs further private members to identify the upper and lower bounds of the array. Provide appropriate declarations for this state. [4 marks]

     

b). Fornire un'implementazione dei tre costruttori per il   Classe BoundedIntArray
  [6 punti]

     

c). Fornire un'implementazione per ciascun metodo (con appropriato   eccezioni) per la classe BoundedIntArray.
  [15 punti]

     

d). Spiega come generalizzare questa classe in modo che gli array di qualsiasi tipo   può essere usato piuttosto che solo int.
  [5 voti]

    
posta M-R 01.07.2016 - 22:01
fonte

1 risposta

2

Un esempio del mondo reale potrebbe essere il girovita. I pantaloncini da uomo potrebbero avere taglie da 28 pollici a 50 con incrementi di 1 pollice. Invece di dire dappertutto nel tuo programma, sizes[i + 27] crei un "array" con gli indici 28-50 (e quindi size = 21) e non devi preoccuparti degli offset.

BoundedIntArray sizes = new BoundedIntArray(28, 50);

void addToCount(int size) {
    int count = sizes.get(size);
    sizes.set(size, count + 1);
}

Presumibilmente, il BoundedIntArray alloca una matrice quando è costruita con una dimensione adatta a non lanciare una IndexOutOfBoundsException per l'intervallo definito.

    
risposta data 01.07.2016 - 22:21
fonte

Leggi altre domande sui tag