Tengo esta condicion:

   if(Character.isLetter(com[0]) && com [0] != '*' ){
         System.out.println("Valid");
     }

Lo que quiero que suceda es comparar este literal '*' con com [0] dinámicamente sin declarar el interior de com como cero.

Ejemplo de entrada cuando escribo este g * g todavía se muestra válido, el único momento en que dejará de ser válido será cuando escriba * gg. Me gustaría mostrar lo inválido sin importar dónde coloque el * char, no solo el primer índice.

Estoy creando un programa para verificar si una variable es válida o no válida, por lo que no se permiten caracteres especiales excepto este _ (debajo de la puntuación)

Aquí está el código completo:

public class identifier {
public static void main (String args[]){
  char[] com = new char[26];

int flag = 0, i = 0;
    System.out.println("Enter an identifier");
      Scanner sc = new Scanner(System.in);
     com = sc.next().toCharArray();



    if(com[i] != 0 && Character.isLetter(com[i]) && com[i] != '*') {
         System.out.println("Valid");         
     }



    else {
         System.out.println("Invalid");
    }      

     while((int)com[i]==0)
     {
          if(!Character.isLetter(com.toString().charAt(i))&& !Character.isDigit(com.toString().charAt(i)) ){
          flag=0;
          break;
          }
          i++;
     }
     if(flag==1){
         System.out.println("Valid");
     }
}

}

-1
ehelp fit 18 ene. 2018 a las 14:15

3 respuestas

La mejor respuesta

Lo que estás buscando es (supongo):

String comm = new String(com);
if (!comm.isEmpty() && Character.isLetter(comm.charAt(0)) && !comm.contains("*")) {

Esto significa: si la cadena de com comienza con una letra y no contiene '*' ...

1
Joop Eggen 18 ene. 2018 a las 11:57
int i = 0;
if(Character.isLetter(com[i]) && com [i] != '*' ){
     System.out.println("Valid");
 }

Simplemente declare cero dentro de una variable y vuelva a escribir com [0] como com [i]

0
Vyshak 18 ene. 2018 a las 11:32

Defina un int con el índice que desee. Es mejor usar String. De esta manera usarás tres métodos.

isEmpty(): Devuelve verdadero si, y solo si, length () es 0.

charAt(int index): Devuelve el valor char en el índice especificado.

contains(CharSequence s): Devuelve verdadero si y solo si esta cadena contiene la secuencia especificada de valores de caracteres.

int i = 0;
if(!com.isEmpty() && Character.isLetter(com.charAt(i)) && !com.contains('*') ){
     System.out.println("Valid");
}
else{
     System.out.println("Invalid");
}

Para obtener más información sobre los métodos, consulte la documentación.

ACTUALIZACIÓN:

Como explicó que desea verificar que si * estaba contenido en algún índice, entonces cambié mi solución para cumplir con sus requisitos.

0
Santiago Salem 18 ene. 2018 a las 12:57