Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Zikem10 en 02 de Agosto 2014, 18:29

Título: Ejemplo del tema CU00661B no corre Scanner java
Publicado por: Zikem10 en 02 de Agosto 2014, 18:29
Este programa no corre cuando trato de crear el objeto

Código: [Seleccionar]
import java.util.Scanner; //Importación del código de la clase Scanner desde la biblioteca Java

// Definimos una clase EntradaDeTeclado aprenderaprogramar.com

public class EntradaDeTeclado {

    private String entradaTeclado; //Variable de instancia (campo) de la clase

 

    public EntradaDeTeclado ()  { //Constructor

        entradaTeclado="";

        pedirEntrada(); //Esto es una llamada a un método interno. Al crear un objeto ejecutamos el método

    } //Cierre del constructor

 

    public void pedirEntrada ()  {  //Método de la clase         

        Scanner entradaEscaner = new Scanner (System.in);

        entradaTeclado = entradaEscaner.nextLine ();     } //Cierre del método pedirEntrada

 

    public String getEntrada () { return entradaTeclado; } //Cierre del método getEntrada

    public String getPrimeraPalabra ()  {

       /*IMPORTANTE: EN JAVA LOS OBJETOS NO SE PUEDEN COMPARAR USANDO == POR ESO ESTO NO FUNCIONARÁ       

          if (entradaTeclado.substring(0,1)=="j") {

          System.out.println ("Hemos detectado una j");

          } else { System.out.println ("Mira esto:" + entradaTeclado.substring(0,1) ); }*/ 

        for (int i=0; i < entradaTeclado.length() - 1; i++) {

            if (entradaTeclado.substring (i, i+1).equals(" ") ) {     //IMPORTANTÍSIMO: COMPARAMOS CON EQUALS

                return entradaTeclado.substring(0, i+1);         }

        }

        return entradaTeclado;  //Caso de que no se detecte ningún espacio devolvemos lo que haya

    } //Cierre del método getPrimeraPalabra

 

    public int getLongitud ()  {  //Método de la clase

        return entradaTeclado.length();

    } //Cierre del método getLongitud

} //Cierre de la clase
 

Título: Re:Ejemplo del tema CU00661B no corre
Publicado por: dongo en 02 de Agosto 2014, 20:18
Hola, bueno he estado probando tu ejemplo y no se la verdad que la clase entrada esta un poco extraña creada, porque ya al crear al objeto, directamente pides una cadena llamando al método "pedirCadena()" por este constructor:


Código: [Seleccionar]
public Prueba ()  { //Constructor

        entradaTeclado="";

        pedirEntrada(); //Esto es una llamada a un método interno. Al crear un objeto ejecutamos el método

    } //Cierre del constructor

He realizado una prueba de tu clase y funciona bien, ¿podrías ponernos el trozo de código que intentas ejecutar tu?

Este es el main que yo he ejecutado y me ha servido:

Código: [Seleccionar]
public static void main(String[] arg){
       
        System.out.println("Inserta una frase:");
        EntradaDeTeclado p =new EntradaDeTeclado();
       
        String cadena=p.getEntrada();
        System.out.println(cadena);
       
    }

Intenta eso, ponernos como intentas crear el objeto. Un saludo!

Nota: Ten en cuenta, que en el momento que llamas al constructor, ya el programa esta esperando que metas una cadena por teclado. A lo mejor es por eso por lo que piensas que no funciona.