Autor Tema: Java pedir datos hasta pulse enter impresion de nueva línea en archivo de texto  (Leído 4585 veces)

portocarrerojava

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 10
    • Ver Perfil
Dos preguntas:

Primera: uso sistema operativo Windows, mala suerte con el 10 mi hermano hizo la actualización, que teclas empleo acá para que reconozca el hasNext, porque según lo que he leido debe ser ctrl z para windows e intro, pero nada, ni con ctrl d, y hay casos en lo que no es bueno estar usando centinela para aplicaciones mas practicas.

Segunda: cuando escribo un archivo de texto, uso el método formater de clase Formatter, ¿como puedo imprimir una nueva línea,  (¿se puede?)? uso el \n como aparece en el manual que sigo, pero parece que no lo reconoce y escribe todo seguido en el archivo de texto.

Gracias!!!!
« Última modificación: 17 de Diciembre 2015, 09:16 por Ogramar »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:Consulta sobre el hasNext () e impresion de nueva línea en archivo de texto
« Respuesta #1 en: 13 de Diciembre 2015, 11:14 »
Hola portocarrerojava

Primera: Si estás usando Java no veo necesario usar teclas especiales, pega el código que estés usando y explica dónde tienes el problema para intentar responderte. Es posible que el problema esté relacionado con lo que se comenta en este hilo: https://www.aprenderaprogramar.com/foros/index.php?topic=3521.0

Segunda: pega el código que estés usando y explica dónde tienes el problema para intentar responderte. Normalmente se puede usar "%n" para generar la salida de nueva línea propia de la plataforma-sistema operativo con que se esté trabajando usando la clase formatter.

Saludos

portocarrerojava

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 10
    • Ver Perfil
Re:Consulta sobre el hasNext () e impresion de nueva línea en archivo de texto
« Respuesta #2 en: 13 de Diciembre 2015, 16:48 »
Hola.
Aquí mismo se puede observar mis dos preguntas: esto es una parte del código que lee datos ingresados del teclado y los escribe en un archivo de texto. Aquí también uso el format (...) y donde no puedo imprimir la nueva línea en el archivo de texto.

Código: [Seleccionar]
while (entrada.hasNext ()){
            try{
                encuesta.establecerCalificacion(entrada.nextInt ());
                encuesta.establecerFrecuencia(entrada.nextInt ());
               
                if ((encuesta.obtenerCalificacion() > 0) &&
                        (encuesta.obtenerFrecuencia() > 0)){
                    salidaEncuesta.format ("%d %d \n",
                            encuesta.obtenerCalificacion(),
                            encuesta.obtenerFrecuencia());
                }else
                    System.out.println ("La calificacion ingresada debe ser ma"
                            + "yor que cero");
            }catch (FormatterClosedException formatterClosedException){
                System.err.println ("Error al escribir el archivo.");
                return;
            }catch (NoSuchElementException elementException){
                System.err.println ("Entrada invalida. Intentelo de nuevo.");
                entrada.nextLine ();
            }
            System.out.printf ("%s %s\n", "Escriba la calificacion (>0) y la "
                    + "frecuencia de la calificacion (>0)", "? ");
        }
}

Esta es la parte del código, como no me funciona el hasNext, uso:
while (entrada.nextInt () != -1){.... //y el resto del código es igual al que he pegado...}
pero el problema con usar nextInt es que me hace ingresar un valor que no me interesa, y no se va a usar para los datos, en una aplicación para un negocio, para el cliente debería ser algo mas directo sin tener que estar ingresando un valor que no se use como dato.
Gracias de antemano por la ayuda!
« Última modificación: 17 de Diciembre 2015, 09:20 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Buenas

Este es un ejemplo de pedir datos sin necesidad de introducir un valor extraño final

Código: [Seleccionar]
import java.util.Scanner;
import java.util.ArrayList;

public class Test1 {

    public static void main (String [] args) {
        Integer dato=0;
        String entrada;

        ArrayList <Integer> listaDatos = new ArrayList<Integer> ();

        System.out.print ("Introduzca los datos y cuando termine pulse enter. Primer dato: ");

        Scanner sc = new Scanner(System.in);
        entrada = sc.nextLine();
        dato = dato.valueOf(entrada);
        listaDatos.add((Integer)dato);

        while (entrada.equals("") == false){
            System.out.print ("Introduzca dato: ");
            entrada = sc.nextLine();
            if (entrada.equals("")==false) {           
                dato = dato.valueOf(entrada);
                listaDatos.add((Integer)dato);
            }

        }
        System.out.println ("¡TERMINADO! Los datos son:" +listaDatos);
    }

}

¿Para el salto de línea has probado el %n?

Salu2

portocarrerojava

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 10
    • Ver Perfil
Gracias!! probare ambas cosas

BornToBeJuan

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 1
    • Ver Perfil
Buenas!
 Creo que el problema que tienes con el salto de linea "\n" se debe al programa con el que lo abres, el bloc de notas no los visualiza. En cambio, si usas el notepad++ se ven bien ordenados.
     Un saludo!

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".