Me ajude nessa questão de java, Digite um nome e o sistema deverá imprimir o nome na tela apenas se esse nome iniciar-se com vogal

import java.util.Scanner;
public class Aprendendo{
    public static void main(String [] args){
        Scanner ler;
        int n = 0;
        String x[] = new String[n];
        ler = new Scanner(System.in);
        int i;

        for (i=0; i<n; i++) {
        System.out.print("Digite um Nome: " );
        x[i] = ler.nextLine();
        }
     
    }
}

Olá, sasa1234.

Você tá com muitos erros nesse código. Além disso, sua postagem está feita de forma errada. Vou deixar esse post aqui pra você dar uma conferida para seus futuros posts.

Falando sobre seu código, você declarou duas variáveis inteiras: i e n. Para ambas, você atribuiu valor inicial 0, mas você incrementa apenas uma: i.

Você ainda cria um vetor de Strings chamado x, mas atribui o tamanho dele como 0. Logo, por que declarar um vetor?

Seu laço de repetição nunca vai acontecer dessa forma! Você tem i=0 e o laço vai se repetir enquanto i for menor que n. Então, 0 é menor que 0?

Sua condição está, portanto, errada. Acredito que sua lógica não esteja muito clara, então vou te dar o algoritmo:

  1. Peça para o usuário o nome dele.
  2. Leia o nome do usuário.
  3. Pegue a primeira letra do nome.
  4. Verifique se a letra é vogal.
  5. Se a primeira letra for vogal, imprima o nome na tela.

Pode parecer confuso, mas você pode fazer até mesmo sem vetor. Se você quer usar vetor, pense: você vai usar um vetor do que? Para que?

Espero que clarifique suas dúvidas!

[]'s

Sem vetor, como eu faria para pegar a primeira letra do nome ?

Você pode obter qualquer caractere de uma String usando o método charAt()!

“Embaixo dos panos”, toda String é um vetor de caracteres. Então, quando você chama o método charAt, você “transforma a String em um vetor de caracteres” e retorna o caractere na posição que você quer.

Então, por exemplo, dado o nome “Vinicius”, eu quero pegar apenas a letra “n”. Como eu faço isso?

String nome = "Vinicius";
char letraDesejada = nome.charAt(2);
System.out.println(letraDesejada);

E o output será:

n

O uso de vetor que você pode fazer nesse caso é ter um vetor de vogais para comparar com a primeira letra.

package Semana3;

import java.util.Scanner;
public class Atividade{
public static void main(String [] args){
Scanner ler;
String nome;
char letra = nome.charAt(0);
ler = new Scanner(System.in);

    System.out.print("Digite um Nome: " );
    nome = ler.nextLine();

/* while{

     if (nome == 'a') || (nome == 'e') || (nome == 'i') || (nome == 'o') || (nome == 'u') {
 
}

}
*/
}

}

da uma luz aí amigo, como faço para para declarar as vogais a, e, i, o, u

if(nome.matches("\\?i[aeiou].*")){
    System.out.println(nome);
}

Bloco de Citação
if (nome == ‘a’) || (nome == ‘e’) {
\Oque deseja que apareça se for vogal
}else{
\Oque deseja fazer senão aparecer vogal
}
Observação: Se deseja declarar um vetor é interessante mostrar o tamanho dele.

Bloco de Citação
String x[] = new String[10];

Observação: No momento do for é interessante que tu declare a quantidade que irá se repetir por exemplo:

Bloco de Citação
for (i=0; i<10; i++) {
System.out.print("Digite um Nome: " );
}

A cada giro o i vai ter um incremento de +1 até chegar em 9 pois é menor que 10… E não menor igual.

Depende da sua criatividade.

Alguns exemplos:

char a = 'a';
char e = 'e';
char i = 'i';
char o = 'o';
char u = 'u';

Ou assim:

char[] vogais = new char[] { 'a', 'e', 'i', 'o', 'u' };

Ou assim:

String vogais = "aeiou";

import java.util.Scanner;
public class Atividade{
public static void main(String [] args){
Scanner ler;
String nome;
int i=0;
char[] vogais = new char[] { ‘a’, ‘e’, ‘i’, ‘o’, ‘u’ };
ler = new Scanner(System.in);

    System.out.print("Digite um Nome: " );
    nome = ler.nextLine();
}
    
 for (int i=0; i < nome.length() ; i++) {
    
     if (nome.charAt(0) == a) || (nome.charAt(0) == e) || (nome.charAt(0) == i) || (nome.charAt(0) == o) || (nome.charAt(0) == u)) {
     System.out.print(+nome );
 }else{
     System.out.print("Esse nome não inicia com vogal");
         
}

}

}

eu acabei fazendo assim, mais nesta dando erro. Alguém poderia me ajudar ?

Tente assim:

Bloco de Citação
package controle;
import java.util.Scanner;
/**

*/
public class Vogais {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String nome;
for(int i = 0; i < 10; i++){
System.out.println(“DIGITE O SEU NOME:\n”);
nome = input.next();
if(nome.equalsIgnoreCase(“a”) || nome.equalsIgnoreCase(“e”)
|| nome.equalsIgnoreCase(“i”) || nome.equalsIgnoreCase(“o”) || nome.equalsIgnoreCase(“u”)){
System.out.println(“O nome tem vogal!”);
}else{
System.out.println(“O nome não tem vogal!”);
}

    }
}

}

Deu erro, so esta aparecendo o nome não tem vogal. Mesmo assim ai que eu fiquei perdido mesmo. O que esta faltando nesse meu código que eu postei ?

char[] vogais = new char[] { ‘a’, ‘e’, ‘i’, ‘o’, ‘u’ };
Scanner input = new Scanner(System.in);
System.out.print("Digite um Nome: " );
String nome = input.nextLine();
char primeiraLetra = nome.charAt(0);
for (char vogal : vogais) {
    if (primeiraLetra == vogal) {
        System.out.println(nome + " começa com a vogal " + vogal );
        return;
    }
}
System.out.println(nome + " não começa com vogal");

Esse código só vai funcionar se o nome digitado for uma vogal.
O que ele quer testar é se o nome começa com uma vogal.

Em amigo não entendi o laço que vc fez, poderia me explicar ? Vc criou uma variável dentro do laço ?

Isso aqui:

for (char vogal : vogais) {
    if (primeiraLetra == vogal) {
        System.out.println(nome + " começa com a vogal " + vogal );
        return;
    }
}

Equivale à isso aqui:

for (int i = 0; i < vogais.length; i++) {
    char vogal = vogais[i];
    if (primeiraLetra == vogal) {
        System.out.println(nome + " começa com a vogal " + vogal );
        return;
    }
}