Descobrir se uma palavra é impar e retornar se a letra central dela é vogal ou consoante caso a palavra seja par retornar se possui os dígrafos rr-ss

Boa tarde pessoal, tudo bem? Preciso fazer um programa que verifique a(s) letra(s) central(is) de uma palavra. Se o número de caracteres for ímpar, ele verifica se a letra central é uma vogal, caso contrário verifica se é um dos dígrafos rr ou ss. O programa deve ser em Java e usar apenas if-else! Iniciei meu código assim porém travei no momento de descobrir o(s) caracter(es) central(is). Alguém poderia me ajudar?

import java.util.Scanner;

public class Alg143 {

public static void main(String[] args) {

	Scanner ler = new Scanner(System.in);
	
	System.out.println("Digite qualquer palavra");
	String palavra = ler.nextLine();
	
	System.out.println(palavra.length());
	
	double resto = palavra.length() % 2;
	
	if(resto != 0) {
		System.out.println("A quantidade de letras da palavra eh impar: " + palavra);
	}
	else if(resto == 0) {
		System.out.println("A quantidade de letras da palavra eh par: " + palavra);
	}
}

}

Qual sua dúvida especificamente? Vc está quase lá. Algumas coisas para melhorar e para pensar:

  • Sua variável resto deve ser int, não double. O resultado obtido na sua expressão de divisão será invariavelmente um valor inteiro, visto que length() retornará um inteiro e você está dividindo o comprimento da String por um inteiro também;
  • Seu else if que é desnecessário, basta um else, visto que ou comprimento é divisível por 2 (resto igual a zero) ou não é. Não há outras possibilidades no contexto do seu algoritmo;
  • Use o método chatAt( int posicao ) da classe String para obter um caractere de uma determinada posição. Por exemplo, palavra.charAt(2) retorna o caractere na posição 2 da palavra;
  • Você precisa calcular a posição dos caracteres do centro;

Pense nisso: se sua palavra tiver 11 caracteres e vc dividir 11 por 2 você obterá 5, que é exatamente o índice do caractere central. Analise: o primeiro caractere está na posição 0, o último na posição 10, sendo assim 5 é a posição do meio. Para a quantidade par, vc pode continuar dividindo por 2, mas você vai precisar de mais uma posição para encontrar o meio. Use o mesmo exemplo acima, agora com 10 caracteres. 10 dividido por 2 resulta em 5, mas 5 é o caractere da “direita” do meio. Qual seria a posição do caractere da esquerda?

Algumas ferramentas importantes e essenciais que hoje em dia os estudantes bizarramente não usam são o caderno, lápis e caneta. Não sei se é o seu caso, mas se você rascunhar no papel o esquema do que você está tentando alcançar, você consegue resolver mais facilmente do que tentar fazer de cabeça.

Eu reescreveria sua solução parcial da seguinte maneira:

import java.util.Scanner;

public class Alg143 {

    public static void main(String[] args) {

        Scanner ler = new Scanner(System.in);
        
        System.out.println("Digite qualquer palavra");
        String palavra = ler.nextLine();
        
        System.out.println(palavra.length());
        
        int resto = palavra.length() % 2;
        int meio = palavra.length() / 2;
        
        if( resto == 0 ) {
            System.out.println("A quantidade de letras da palavra eh par: " + palavra);
            // use o método charAt da classe String para mostrar os dois caracteres centrais
        } else {
            System.out.println("A quantidade de letras da palavra eh impar: " + palavra);
            // use o método charAt da classe String para mostrar o caractere central
        }
        
    }
    
}

Mesmo sua variável resto não precisaria ser usada, bastando colocar o cálculo no próprio if, visto que esse valor só será usado para isso. Algo como

if ( palavra.length() % 2 == 0 ) {
    ...
} else {
   ...
}

Tente finalizar e avise se deu certo!

Olá David, tudo bem? Obrigado pelo retorno e pelas dicas de melhora do código, sobre descobrir a posição do caracter central quando impar ou os dígrafos centrais serem rr ou ss quando pares, ainda ficou um pouco de dúvida, no caso vc determinou que a palavra tenha 11 caracteres e com isso fica tranquilo de definir a posição através do método palavra.chartAt(5), no caso, posição 5 para saber se o caracter central dessa palavra é vogal ou não, mas e quando eu não sei o tamanho da palavra que o usuário vai digitar? O mesmo acontece para as palavras pares, como proceder?

Você testou o código que passei e tentou entender ele, fazendo um teste de mesa pra acompanhar o valor das variáveis? Se você fizer isso suas dúvidas serão respondidas.