Alguém podia me ajudar?

Eu queria saber se têm como eu fazer com que o programa mostre apenas as iniciais do nome em maiúsculo sem as preposições. Na hora que imprimir as iniciais do nome, não pode considerar as iniciais dos conectores, como no caso de “José da Silva”:

public static void main(String[] args) {
		Scanner input = new Scanner(System.in);

		System.out.print("Nome: ");
		String nome = input.nextLine().toUpperCase();

		System.out.print("Iniciais do Nome: ");
		System.out.print(nome.charAt(0));
		for (int i = 0; i < nome.length(); i++) {
			if (nome.charAt(i) == ' ') {
				System.out.print(nome.charAt(i + 1));
			}
		}
	}

No caso de José da Silva, o retorno seria apenas JS? É isso?

Na verdade seria qualquer nome que o usuário digitasse. Podia ser, João da Silva, Marcelo de costa e outros. Qualquer nome que contenha, e, do, da, dos, das, de, di, du, não deverão aparecer em maiúsculo no terminal.

Ah sim, entendi. Usei José da Silva só como exemplo para tentar entender a ideia.

Montei um código aqui, veja se é isso:

import java.util.Scanner;

public class Main {

	public static void main(String[] args) throws Exception {
		Scanner input = new Scanner(System.in);
		String[] conectores = new String[] { "e", "do", "da", "dos", "das", "de", "di", "du" };

		System.out.print("Nome: ");
		String nome = input.nextLine();

		String[] partesNome = nome.split(" ");
		String abreviacao = "";
		
		for (String parteNome : partesNome) {
			if (!verificarConector(conectores, parteNome)) {
				abreviacao += Character.toUpperCase(parteNome.charAt(0));
			}
		}
		
		System.out.println("Iniciais do Nome: " + abreviacao);
		input.close();
	}
	
	private static boolean verificarConector(String[] conectores, String parteNome) {
		for (String c : conectores) {
			if (parteNome.equalsIgnoreCase(c)) {
				return true;
			}
		}
		
		return false;
	}
}

É exatamente isso, amigo. Muitíssimo obrigado.