elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  (Consulta) Posible BUG en Java
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: (Consulta) Posible BUG en Java  (Leído 3,404 veces)
class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
(Consulta) Posible BUG en Java
« en: 2 Octubre 2017, 09:16 am »

Hola, buenas.

Estoy haciendo ejercicios de un libro de Java. En un ejercicio, se me pedía el uso de archivos:

Citar
Realiza un programa que nos diga si hay probabilidad de que nuestra pareja
nos está siendo infiel. El programa irá haciendo preguntas que el usuario
contestará con verdadero o falso. Cada pregunta contestada como verdadero
sumará 3 puntos. Las preguntas contestadas con falso no suman puntos. Utili-
za el fichero
test_infidelidad.txt
para obtener las preguntas y las conclusiones
del programa.

El problema que tengo no es de compilación (compila bien), sino de ejecución. Cuando lo ejecuto, se lee la primera línea del archivo, se imprime, y se pausa el programa para la entrada (como es de esperar). El problema es que al introducir un valor de entrada (booleana, por ejemplo, true), en una nueva línea se imprime true y el programa se para de nuevo. Si introduzco la entrada de nuevo, el programa hace lo que debería, pero en cada entrada hay que introducir dos entradas. Ejemplo:

Código:
¿Ha sido fiel a su pareja? true          # Ese true lo introduje por teclado. Pulso enter
true                                      # Se imprime mágicamente
true                                      # Tengo que introducir de nuevo la respuesta
¿Quiere a su pareja?

Los "# [...]" son comentarios que os hago para entender la ejecución.

Este es el código que tengo:

Código
  1. import java.io.RandomAccessFile;
  2. import java.io.IOException;
  3. import java.util.Scanner;
  4.  
  5. public class Ejercicio_16 {
  6.    public static void main(String[] args) {
  7.        try {
  8.            RandomAccessFile archivo =
  9.                new RandomAccessFile ("test_infidelidad.txt", "r");
  10.            Scanner scanner = new Scanner(System.in);
  11.            String linea;
  12.            boolean respuesta_correcta;
  13.            boolean respuesta;
  14.            int puntuacion, puntuacion_maxima;
  15.  
  16.            puntuacion = 0;
  17.            puntuacion_maxima = 0;
  18.  
  19.            while(null != (linea = archivo.readLine())) {
  20.                respuesta_correcta = archivo.readBoolean();
  21.  
  22.                System.out.print(linea + " ");
  23.                respuesta = scanner.nextBoolean();
  24.  
  25.                if(respuesta == respuesta_correcta)
  26.                    puntuacion += 3;
  27.  
  28.                puntuacion_maxima += 3;
  29.            }
  30.  
  31.            System.out.println("Ha sacado " + puntuacion + "/" + puntuacion_maxima + " de puntuación");
  32.  
  33.            archivo.close();
  34.        } catch (IOException e) {
  35.            System.out.println(e);
  36.        }
  37.    }
  38. }

test_infidelidad.txt
Código:
¿Ha sido fiel a su pareja?
true
¿Quiere a su pareja?
true
¿Tiene su pareja o sus hijos algún entrenador personal?
false
¿Pone su pareja excusas para acostarse?
false

Gracias por leer.


« Última modificación: 2 Octubre 2017, 09:19 am por class_OpenGL » En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
animanegra

Desconectado Desconectado

Mensajes: 287



Ver Perfil
Re: (Consulta) Posible BUG en Java
« Respuesta #1 en: 2 Octubre 2017, 10:17 am »

Primero, cuando algo no funcione no pienses nunca que es un bug, es siempre un fallo de programación tuyo.

Probablemente sea porque la representación del booleano en un archivo no es el string en ascii true o false. Si queires prueba a escribir en un fichero varios booleanos y mira la representación que tienen realmente al almacenarlos.

Y o bien cambias tu forma de representacion de dicho booleano en el fichero donde tienes almacenadas las preguntas y sespuestas o bien quitate los booleanos y lee solo strings y compara strings todo el rato, al final ten en cuenta que la entrada por teclado cuando pones un true es una string que compone la palabra "true" no un booleano que vale true.

Saludos.


En línea


42
No contesto mensajes por privado, si tienes alguna pregunta, consulta o petición plantéala en el foro para que se aproveche toda la comunidad.
class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
Re: (Consulta) Posible BUG en Java
« Respuesta #2 en: 2 Octubre 2017, 14:55 pm »

Jaja. Ya sé que el tema de los BUGS es un tema que casi nunca se da, pero como había compilado el JDK no oficial con makepkg, pues pensé en los bugs automáticamente. Tenías razón, no es un BUG, es la representación del booleano. Al final he cambiado la representación en mi archivo. ¡Muchas gracias!
En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Hacer consulta y mostrar en formulario ¿es posible ?
PHP
teudiss 4 7,688 Último mensaje 22 Marzo 2010, 12:09 pm
por haxple
Consulta; Seria posible diseñar un navegador que omita el spam.
Software
astinx 5 2,090 Último mensaje 16 Diciembre 2011, 14:36 pm
por Pablo Videla
[Consulta] ¿Es posible?
Programación C/C++
bemone 0 1,339 Último mensaje 19 Febrero 2013, 21:38 pm
por bemone
[Consulta]google hangouts en wordpress phpBB smf es posible
Desarrollo Web
bacanzito 1 2,010 Último mensaje 14 Enero 2014, 23:59 pm
por #!drvy
consulta sql en java
Java
R/G 1 2,009 Último mensaje 24 Octubre 2014, 16:29 pm
por R/G
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines