Arrays

Un array (numit și mulțime, sau vector) este un container care poate reţine mai multe valori de acelaşi tip. Lungimea acestuia este fixă şi stabilită la crearea lui.

Fiecare valoare din array este denumită element, şi fiecare element este accesat printr-un index numeric. Aşa cum reiese şi din imaginea de mai sus, numerotarea unui array începe cu valoarea 0. Deci, al 9-lea element este cel de pe poziţia 8 (sau care are indexul 8).

Următorul program creează un array de numere întregi şi afişează conţinutul acestuia.

class ArrayDemo {
    public static void main(String[] args) {
        // declararea unui array cu numere intregi
        // se declara ca o variabila normala, cu diferenta ca se folosesc si paranteze patrate []
        int[] anArray;

        // alocarea spatiului pentru 10 numere
        anArray = new int[10];

        // initializarea primului element
        anArray[0] = 100;
        // initializarea celui de-al doilea element
        anArray[1] = 200;
        // initializarea celorlate elemente
        anArray[2] = 300;
        anArray[3] = 400;
        anArray[4] = 500;
        anArray[5] = 600;
        anArray[6] = 700;
        anArray[7] = 800;
        anArray[8] = 900;
        anArray[9] = 1000;

        System.out.println("Element at index 0: "
                           + anArray[0]);
        System.out.println("Element at index 1: "
                           + anArray[1]);
        System.out.println("Element at index 2: "
                           + anArray[2]);
        System.out.println("Element at index 3: "
                           + anArray[3]);
        System.out.println("Element at index 4: "
                           + anArray[4]);
        System.out.println("Element at index 5: "
                           + anArray[5]);
        System.out.println("Element at index 6: "
                           + anArray[6]);
        System.out.println("Element at index 7: "
                           + anArray[7]);
        System.out.println("Element at index 8: "
                           + anArray[8]);
        System.out.println("Element at index 9: "
                           + anArray[9]);
    }
}

Într-o situaţie reală se foloseşte de obicei o structură de control repetitivă pentru afişarea unui array. Astfel, se pot înlocui instrucţiunile de afişare din codul de mai sus cu următoarele instrucţiuni.

// ... cod pentru initializare

for (int i = 0; i < 10; i++) {
    System.out.println("Element at index " + i + ": "
                           + anArray[i]);
}

// ... sfarsitul programului

De obicei valorile se preiau sau se citesc din alte părţi. Următorul program citeşte 10 numere întregi de la tastatură, le salvează într-un array, apoi le afişează.

int[] array = new int[10];
Scanner s = new Scanner(System.in);

// citire
for (int i = 0; i < array.length; i++) {
    array[i] = s.nextInt();
}

// afisare
for (int i = 0; i < array.length; i++) {
    System.out.println(array[i]);
}

Observaţi folosirea sintaxei array.length. Aceasta ne dă automat lungimea array-ului pe care vrem să îl manipulăm. Astfel încât, dacă facem modificări la lungimea acestuia când îl declarăm, modificările respective se vor resimţi în tot programul, nemaifiind nevoie să schimbăm valoarea până la care facem parcurgerea în buclă.

Observaţi şi valorile de la care pornesc cele 2 for-uri. Acestea încep de la 0, care este valoarea primului index din array şi merg până la strict < decât lungimea acestuia, adică valoarea 9, care indică ultimul index.

Exerciţii

1. Creează un vector cu 5 elemente, pune valori în toate poziţiile şi afişează elementele de pe poziţiile 1, 2 şi 4.

Soluţie

Soluţie

public class MyArray {
    public static void main(String[] args) {
        int[] array = new int[5];
        array[0] = 17;
        array[1] = -3;
        array[2] = 28;
        array[3] = 76;
        array[4] = 5;
        
        System.out.println("Valoarea de pe pozitia 1 este " + array[1]);
        System.out.println("Valoarea de pe pozitia 2 este " + array[2]);
        System.out.println("Valoarea de pe pozitia 4 este " + array[4]);
    }
}


2. Creează un vector care reţine 1000 de valori. Pune în el diverse valori. Afişează vectorul, apoi afişează doar numerele cu 0 în coadă (ex: 10, 20, 30, etc…).

Soluţie

Soluţie

public class MyArray {
    public static void main(String[] args) {
        int[] numere = new int[1000];
        for (int i = 0; i < numere.length; i++) {
            numere[i] = i * 2; // o formulă oarecare pentru a salva numere în array
        }
        
        for (int i = 0; i < numere.length; i++) {
            System.out.println(numere[i] + " ");
        }
        
        for (int i = 0; i < numere.length; i++) {
            if ((numere[i] % 10) == 0) {
                System.out.println(numere[i] + " ");
            }
        }
    }
}


3. Creează un array de 10 elemente în care să introduci numere citite de la tastatură. Calculează suma elementelor şi afişeaz-o.

Soluţie

Soluţie

public class MyArray {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int[] numere = new int[10];
        for (int i = 0; i < numere.length; i++) {
            System.out.println("Introduceti urmatorul numar:");
            numere[i] = s.nextInt();
        }
        
        int suma = 0;
        for (int i = 0; i < numere.length; i++) {
            suma += numere[i];
        }
        System.out.println("Suma este " + suma);
    }
}


4. Creează un array care să conţină mai multe nume de persoane. Afişează-l folosind un for.

Soluţie

Soluţie

public class MyArray {
    public static void main(String[] args) {
        String[] nume = new String[5]; // observa schimbarea din int in String care a avut loc in ambele locuri!
        nume[0] = "Andrei";
        nume[1] = "Ionela";
        nume[2] = "Mihai";
        nume[3] = "Costel";
        nume[4] = "Georgiana";
        
        for (int i = 0; i < nume.length; i++) {
            System.out.println("Valoarea de pe pozitia " + i + " este " + nume[i]);
        }
    }
}


Resurse

Discussion

, 2016/01/27 12:13

La exercitiul 3 nu este suficient un singur for?

de ex.

for (int u = 0; u < array2.length; u++) {

 array2[u] = tst.nextInt();
 suma += array2[u];
  }	
, 2016/01/28 09:41

Desigur, merge și cu un singur for. De obicei există mai multe metode de rezolvare pentru aproape orice problemă, cu grade variabile de eficiență.

În cazul de aici, însă, abordarea a fost mai explicită decât era cazul pentru a fi mai ușor de înțeles. Nu este nicio problemă dacă rezolvi problema altfel, într-un mod mai eficient. :)

You could leave a comment if you were logged in.