ArraysExample.java

← Back to Course
Java Source File Download
import java.util.Arrays;

/**
 * Java Basics: Arrays
 * PT821 - Object-Oriented Programming
 *
 * This example demonstrates:
 * - Array declaration and initialization
 * - Accessing and modifying elements
 * - Array length
 * - Iterating through arrays
 * - Multi-dimensional arrays
 * - Common array operations
 */
public class ArraysExample {
    public static void main(String[] args) {

        // ============================================
        // 1. ARRAY DECLARATION AND INITIALIZATION
        // ============================================
        System.out.println("=== Array Declaration and Initialization ===\n");

        // Method 1: Declare then initialize
        int[] numbers = new int[5];  // Creates array of 5 integers (all 0)

        // Method 2: Declare and initialize with values
        int[] scores = {85, 92, 78, 95, 88};

        // Method 3: Using new keyword with values
        String[] names = new String[]{"Ali", "Fatma", "Hassan"};

        // Display arrays
        System.out.println("numbers array (default values): " + Arrays.toString(numbers));
        System.out.println("scores array: " + Arrays.toString(scores));
        System.out.println("names array: " + Arrays.toString(names));

        // ============================================
        // 2. ACCESSING AND MODIFYING ELEMENTS
        // ============================================
        System.out.println("\n=== Accessing and Modifying Elements ===\n");

        // Arrays are zero-indexed (first element is at index 0)
        System.out.println("First score (index 0): " + scores[0]);
        System.out.println("Third score (index 2): " + scores[2]);
        System.out.println("Last score (index 4): " + scores[4]);

        // Modifying elements
        numbers[0] = 10;
        numbers[1] = 20;
        numbers[2] = 30;
        numbers[3] = 40;
        numbers[4] = 50;

        System.out.println("\nAfter modification: " + Arrays.toString(numbers));

        // ============================================
        // 3. ARRAY LENGTH
        // ============================================
        System.out.println("\n=== Array Length ===\n");

        System.out.println("Length of scores array: " + scores.length);
        System.out.println("Length of names array: " + names.length);

        // Last element is at index (length - 1)
        System.out.println("Last element of scores: " + scores[scores.length - 1]);

        // ============================================
        // 4. ITERATING THROUGH ARRAYS
        // ============================================
        System.out.println("\n=== Iterating Through Arrays ===\n");

        // Using for loop
        System.out.println("Using for loop:");
        for (int i = 0; i < scores.length; i++) {
            System.out.println("scores[" + i + "] = " + scores[i]);
        }

        // Using enhanced for loop (for-each)
        System.out.println("\nUsing for-each loop:");
        for (int score : scores) {
            System.out.println("Score: " + score);
        }

        // Iterating with while loop
        System.out.println("\nUsing while loop:");
        int index = 0;
        while (index < names.length) {
            System.out.println("Name: " + names[index]);
            index++;
        }

        // ============================================
        // 5. COMMON ARRAY OPERATIONS
        // ============================================
        System.out.println("\n=== Common Array Operations ===\n");

        int[] data = {45, 82, 33, 91, 67, 28, 75};
        System.out.println("Array: " + Arrays.toString(data));

        // Find sum
        int sum = 0;
        for (int value : data) {
            sum += value;
        }
        System.out.println("Sum: " + sum);

        // Find average
        double average = (double) sum / data.length;
        System.out.printf("Average: %.2f%n", average);

        // Find maximum
        int max = data[0];
        for (int value : data) {
            if (value > max) {
                max = value;
            }
        }
        System.out.println("Maximum: " + max);

        // Find minimum
        int min = data[0];
        for (int value : data) {
            if (value < min) {
                min = value;
            }
        }
        System.out.println("Minimum: " + min);

        // Search for element
        int searchValue = 67;
        int foundIndex = -1;
        for (int i = 0; i < data.length; i++) {
            if (data[i] == searchValue) {
                foundIndex = i;
                break;
            }
        }
        System.out.println("Element " + searchValue + " found at index: " + foundIndex);

        // Count occurrences
        int[] grades = {5, 4, 5, 3, 5, 4, 5, 2, 5};
        int countFives = 0;
        for (int grade : grades) {
            if (grade == 5) {
                countFives++;
            }
        }
        System.out.println("Number of 5s in grades: " + countFives);

        // ============================================
        // 6. SORTING ARRAYS
        // ============================================
        System.out.println("\n=== Sorting Arrays ===\n");

        int[] unsorted = {64, 34, 25, 12, 22, 11, 90};
        System.out.println("Before sorting: " + Arrays.toString(unsorted));

        Arrays.sort(unsorted);
        System.out.println("After sorting: " + Arrays.toString(unsorted));

        // Sorting strings
        String[] fruits = {"Banana", "Apple", "Orange", "Mango"};
        System.out.println("\nBefore sorting: " + Arrays.toString(fruits));

        Arrays.sort(fruits);
        System.out.println("After sorting: " + Arrays.toString(fruits));

        // ============================================
        // 7. COPYING ARRAYS
        // ============================================
        System.out.println("\n=== Copying Arrays ===\n");

        int[] original = {1, 2, 3, 4, 5};

        // Using Arrays.copyOf
        int[] copy1 = Arrays.copyOf(original, original.length);
        System.out.println("Original: " + Arrays.toString(original));
        System.out.println("Copy: " + Arrays.toString(copy1));

        // Partial copy
        int[] partial = Arrays.copyOf(original, 3);
        System.out.println("Partial copy (first 3): " + Arrays.toString(partial));

        // ============================================
        // 8. MULTI-DIMENSIONAL ARRAYS
        // ============================================
        System.out.println("\n=== Multi-Dimensional Arrays ===\n");

        // 2D array (matrix)
        int[][] matrix = {
            {1, 2, 3},
            {4, 5, 6},
            {7, 8, 9}
        };

        System.out.println("3x3 Matrix:");
        for (int i = 0; i < matrix.length; i++) {
            for (int j = 0; j < matrix[i].length; j++) {
                System.out.print(matrix[i][j] + " ");
            }
            System.out.println();
        }

        // Accessing elements
        System.out.println("\nElement at [1][2]: " + matrix[1][2]);  // 6
        System.out.println("Element at [0][0]: " + matrix[0][0]);    // 1

        // Student grades table
        System.out.println("\nStudent Grades Table:");
        String[] students = {"Ali", "Fatma", "Hassan"};
        String[] subjects = {"Math", "Science", "English"};
        int[][] studentGrades = {
            {85, 90, 88},   // Ali's grades
            {92, 87, 95},   // Fatma's grades
            {78, 82, 80}    // Hassan's grades
        };

        // Print header
        System.out.print("Student\t\t");
        for (String subject : subjects) {
            System.out.print(subject + "\t");
        }
        System.out.println("Average");
        System.out.println("------------------------------------------------");

        // Print grades
        for (int i = 0; i < students.length; i++) {
            System.out.print(students[i] + "\t\t");
            int total = 0;
            for (int j = 0; j < studentGrades[i].length; j++) {
                System.out.print(studentGrades[i][j] + "\t");
                total += studentGrades[i][j];
            }
            double avg = total / 3.0;
            System.out.printf("%.1f%n", avg);
        }
    }
}