Pour les trois permiers exercices, l'objectif est de donner l'affichage produit par le programme.

Exercice un

import java.util.Arrays;

public class Exo11 {
    public static void main(String[] args) {
	int[] tab = { 2, 3, 4 };
	int[] plop = tab;
	int[] foo = { 2, 3, 4 };
	int x = foo[2];
	foo[2] = foo[1] + 4;
	System.out.println(x + " " + foo[2] + " " + plop[2]);
	int j = 0;
	for (int i : tab) {
	    i = i - 2;
	    j = j + i;
	}
	System.out.println(j);
	System.out.println(Arrays.toString(tab));
	for (int k = 0; k < plop.length; k++) {
	    plop[k] = plop[k] + 1;
	    tab[k] = tab[k] + 1;
	    foo[k] = foo[k] - 1;
	}
	System.out.println(Arrays.toString(tab));
	System.out.println(Arrays.toString(plop));
	System.out.println(Arrays.toString(foo));
    }
}

On obtient l'affichage suivant :

4 7 4
3
[2, 3, 4]
[4, 5, 6]
[4, 5, 6]
[1, 2, 6]

Exercice deux

import java.util.Arrays;

public class Exo21 {
    public static void main(String[] args) {
	double[][] x = new double[3][];
	for (int i = 0; i < x.length; i++) {
	    x[i] = new double[i + 1];
	    for (int j = 0; j < i + 1; j++) {
		x[i][j] = i + j;
	    }
	}
	System.out.println(Arrays.deepToString(x));
	double[][] y = x;
	double[] z = x[1];
	y[0][0] = 2;
	y[1] = new double[] {-2.0};
	System.out.println(Arrays.deepToString(x));
	System.out.println(Arrays.deepToString(y));
	System.out.println(Arrays.toString(z));
    }
}

On obtient l'affichage suivant :

[[0.0], [1.0, 2.0], [2.0, 3.0, 4.0]]
[[2.0], [-2.0], [2.0, 3.0, 4.0]]
[[2.0], [-2.0], [2.0, 3.0, 4.0]]
[1.0, 2.0]

Exercice trois

import java.util.Arrays;

public class Exo31 {
    public static void main(String[] args) {
	String[] foo = { "V", "W", "X", "Y", "Z" };
	String[] ploc = foo;
	String jhe = ploc[2];
	String bar = "AbTu";
	for (int i = 1; i < foo.length; i++) {
	    foo[i] = foo[i - 1] + bar.charAt(i - 1);
	}
	System.out.println(Arrays.toString(foo));
	System.out.println(Arrays.toString(ploc));
	System.out.println(jhe);
	StringBuilder[] arf = new StringBuilder[5];
	for (int i = 0; i < arf.length; i++) {
	    arf[i] = new StringBuilder();
	    arf[i].append(i);
	}
	System.out.println(Arrays.toString(arf));
	StringBuilder[] rbt = arf;
	StringBuilder oza = rbt[2];
	for (int i = 0; i < arf.length; i++) {
	    rbt[i] = arf[i].append(arf.length-i);
	}
	System.out.println(Arrays.toString(rbt));
	System.out.println(Arrays.toString(arf));
	System.out.println(oza);
    }
}

On obtient l'affichage suivant :

[V, VA, VAb, VAbT, VAbTu]
[V, VA, VAb, VAbT, VAbTu]
X
[0, 1, 2, 3, 4]
[05, 14, 23, 32, 41]
[05, 14, 23, 32, 41]
23

Exercice quatre

Compléter le programme ci dessous pour qu'il calcule puis affiche le produit des entiers impairs strictement inférieurs à la valeur entrée par l'utilisateur. On devra obligatoirement utiliser les BigInteger.

import java.math.BigInteger;
import java.util.Scanner;

public class Exo41 {
    public static void main(String[] args) {
	Scanner scan = // À COMPLÉTER
	int nb = // À COMPLÉTER
	BigInteger res = // À COMPLÉTER
	// À COMPLÉTER
	System.out.println(res);
    }
}

Une solution possible est donnée par le programme suivant :

import java.math.BigInteger;
import java.util.Scanner;

public class Exo41 {
    public static void main(String[] args) {
	Scanner scan = new Scanner(System.in);
	int nb = scan.nextInt();
	BigInteger res = BigInteger.ONE;
	for (int i = 1; i < nb; i += 2) {
	    res = res.multiply(BigInteger.valueOf(i));
	}
	System.out.println(res);
    }
}

Exercice cinq

Compléter le programme ci-dessous pour qu'il un texte de la forme ++===++ obtenu en mettant bout à bout deux motifs. Le premier motif est constitué de base fois le symbole +. Le second motif est constitué de base+1 fois le symbole =. Le résultat est obtenu en enchaînant nb motifs en alternance, en commençant par le premier motif. Dans l'exemple, on avait donc base=2 et nb=3.

import java.util.Scanner;

public class Exo51 {
    public static void main(String[] args) {
	Scanner scan = // À COMPLÉTER
	int base = // À COMPLÉTER
	int nb = // À COMPLÉTER
	StringBuilder motif1 = // À COMPLÉTER
	StringBuilder motif2 = // À COMPLÉTER
	// À COMPLÉTER (construction des motifs)
	StringBuilder result = // À COMPLÉTER
	for (int i = 0; i < nb; i++) {
	    // À COMPLÉTER
	}
	System.out.println(result);
    }
}

Une solution possible est donnée par le programme suivant :

import java.util.Scanner;

public class Exo51 {

    public static void main(String[] args) {
	Scanner scan = new Scanner(System.in);
	int base = scan.nextInt();
	int nb = scan.nextInt();
	StringBuilder motif1 = new StringBuilder();
	for (int i = 0; i < base; i++) {
	    motif1.append('+');
	}
	StringBuilder motif2 = new StringBuilder();
	for (int i = 0; i < base; i++) {
	    motif2.append('-');
	}
	StringBuilder result = new StringBuilder();
	for (int i = 0; i < nb; i++) {
	    if (i % 2 == 0) {
		result.append(motif1);
	    } else {
		result.append(motif2);
	    }
	}
	System.out.println(result);
    }

}