Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Genvi en 3 Diciembre 2015, 20:55 pm



Título: Un poco de principiantes con ganas
Publicado por: Genvi en 3 Diciembre 2015, 20:55 pm
Perdonad, si alguien puede ayudarme se lo agradecería.
Resulta que estoy haciendo un código en el que introduzco varías frases por teclado pero el problema viene cuando introduzco un número, que al ser un string lo que quiero introducir, pues acepta números. Yo quiero que si se introduce un número en vez de una letra de error, pero no se como detectar si en el string introducido hay números, espacios en blanco delante o signos. Que alguien me solucione este problema y me digo con qué método se resuelve por favor.
Gracias!


Título: Re: Un poco de principiantes con ganas
Publicado por: 0roch1 en 3 Diciembre 2015, 21:01 pm
y el código?

Utiliza el Geshi para resaltar el código.
(https://i.imgur.com/ruDdAdP.png)


Título: Re: Un poco de principiantes con ganas
Publicado por: Genvi en 3 Diciembre 2015, 21:56 pm
El código da igual, solo quiero saber como marcar como erróneo los números que se introducen pero bueno aquí tienes :)

Código:
import java.util.Scanner;
public class MapaTiempo {

public static void main(String[] args) {


Scanner teclado = new Scanner(System.in);


System.out.println("Introduzca el nombre de la nación: ");
Nación pais = new Nación(teclado.nextLine());

String enter = "";
for(int i = 0; i < 1;){
System.out.println("Introduzca el nombre de la comunidad (enter para salir): ");
Comunidad region = new Comunidad(teclado.nextLine());
if(region.getNombre().equals(enter))
break;
for(int j = 0; j < 1;){
System.out.println("Introduzca el nombre del municipio de esta comunidad (enter para salir): ");
Municipio pueblo = new Municipio(teclado.nextLine());
if(pueblo.getNombre().equals(enter))
break;
}
}

El código que tengo es este. En el cual da igual introducir una letra que un número, pero evidentemente las comunidades no tienen números en sus nombres asique solo quiero que se puedan introducir letras por teclado.


Título: Re: Un poco de principiantes con ganas
Publicado por: 0roch1 en 4 Diciembre 2015, 00:35 am
Hay diferentes formas, te dejo algunas.

Código
  1. import java.util.Scanner;
  2. import java.util.regex.Pattern;
  3.  
  4. public class Text {
  5.  
  6.  
  7. public static void main(String[] args) {
  8. Scanner sc = new Scanner(System.in);
  9. String str = null;
  10.  
  11. System.out.println("1- Escribe un texto");
  12. str = sc.nextLine();
  13. if(isLetters(str)) {
  14. System.out.println(str);
  15. }
  16.  
  17. System.out.println("2- Escribe un texto");
  18. str = sc.nextLine();
  19. if(isAlpha(str)) {
  20. System.out.println(str);
  21. }
  22.  
  23. System.out.println("3- Escribe un texto");
  24.    if(hasLetters(sc)) {
  25.   System.out.println(sc.nextLine());
  26.    }
  27.  
  28. System.out.println("4- Escribe un texto");
  29. str = sc.nextLine();
  30.    if(isStringAlpha(str)) {
  31.   System.out.println(str);
  32.    }
  33.  
  34. }
  35.  
  36. private static boolean isStringAlpha(String text) {
  37. int charCount=0;
  38.    String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  39.    if(text.length() == 0) return false;
  40.    for(int i=0;i<text.length();i++){
  41.        for(int j=0;j<alphabet.length();j++){
  42.            if(text.substring(i,i+1).equals(alphabet.substring(j,j+1))
  43.                || text.substring(i,i+1).equals(alphabet.substring(j,j+1).toLowerCase()))
  44.                charCount++;
  45.        }
  46.        if(charCount != (i+1)){
  47.            return false;
  48.        }
  49.    }
  50.        return true;
  51. }
  52.  
  53. private static boolean hasLetters(Scanner sc) {
  54. if(sc.hasNext("[A-Za-z]+")) {
  55. return true;
  56. }else {
  57. return false;
  58. }
  59.  
  60. }
  61.  
  62. private static boolean isLetters(String text) {
  63. if(text.matches("[a-zA-Z]+")) {
  64. return true;
  65. }else {
  66. return false;
  67. }
  68. }
  69.  
  70. private static boolean isAlpha(String text) {
  71. Pattern pattern = Pattern.compile("\\p{Alpha}+");
  72.        if(pattern.matcher(text).matches()) {
  73.         return true;
  74.        }else {
  75.         return false;
  76.        }
  77.    }
  78.  
  79.  
  80. }
  81.  


Título: Re: Un poco de principiantes con ganas
Publicado por: Genvi en 4 Diciembre 2015, 00:59 am
Está genial tu aportación. Me estaba comiendo la cabeza mucho porque no me salía.
Muchísimas gracias, eres un crack. Algún día seré como tú *-*