2009-06-22 6 views
21

Cómo podemos averiguar el siguiente carácter de la persona ingresada. Por ejemplo, si ingresé el carácter "b", ¿cómo obtengo la respuesta "c"?¿Cómo saber el siguiente carácter alfabéticamente?

+5

¿Cuál es la respuesta si ingreso "ñ"? Y C"? Y 1"? Y "."? (Pregunta relacionada: ¿Hay alguna restricción en la entrada?) –

Respuesta

29

Prueba esto:

char letter = 'c'; 

if (letter == 'z') 
    nextChar = 'a'; 
else if (letter == 'Z') 
    nextChar = 'A'; 

else 
    nextChar = (char)(((int)letter) + 1); 

De esta manera usted no tendrá problemas cuando el carbón es la última del alfabeto.

+2

Espera, reemplaza el '+ 1' con '+ 13' y obtienes ...? – Treb

13

¿Qué tal:

char first = 'c'; 
char nextChar = (char)((int) first + 1); 
+2

¿Qué significa eso para 'z'? –

+1

Eso seguramente NO funcionará. Estaba tratando de ser simplista al no agregar código de validación. Pero al ver los comentarios como una pregunta, creo que no debería haber respondido. ¿Debo eliminar mi respuesta? – Hemant

+0

si primero char = 'z', este código dará la siguiente char que es '{', por lo tanto, no en el alfabeto. – rogeriopvl

2

Tal vez la forma más simple es una pequeña función y una serie de los 26 caracteres. Luego puede decidir qué quiere devolver por 'z'.

+0

Por supuesto, esto podría no ser lo que la pregunta de tarea está recibiendo en ... –

1

Convierta el carácter en un número, incremente el número y luego convierta de nuevo.

Pero tenga en cuenta lo que sucederá con "z" o "á" (Latín Pequeño Leter A con Agudo).

0

necesita solo agregar 1 en el personaje que obtiene el siguiente caracter. Funciona en valores ASCII.

+3

... hasta 'y'. –

0

¿Cómo se clasifica? En alemán (creo) debería ordenar después de a, pero en sueco debería aparecer después de å, que a su vez está después de z. Esta no es una pregunta trivial, a menos que te limites al inglés.

+0

Lol.En Alemania llamamos a la alphabeth en el mismo orden que en inglés. Las letras adicionales ü, ö y ä están fuera de cualquier posición. Hah nunca pensó en esto. ¿Por qué diablos no hay un lugar para estas 3 letras O.o. – C4u

5

Tenga en cuenta que un char se convertirá implícitamente en un int. Aquí hay una solución simplificada:

char incrementCharacter(char input) 
{ 
    return (input == 'z'? 'a': (char)(input + 1)); 
} 
0

Este valor Cambio útil aquí para allá aplicación de Excel para encontrar columna anterior

public static string PrevExecelColumn (cadena s) { s = s.ToUpper(); char [] ac = s.ToCharArray(); int ln = ac.Length; para (int i = ln - 1; i> -1; i--) { char c = ac [i];

  if (c == 'A') 
      { 
       ac[i] = 'Z'; 
       continue; 
      } 

      ac[i] = (char)(((int)ac[i]) - 1); 
      break; 

     } 
     s = new string(ac); 
     return s; 
    } 
Cuestiones relacionadas