Foros del Web » Programación para mayores de 30 ;) » Java »

Solucionar codigo de un programa en consola

Estas en el tema de Solucionar codigo de un programa en consola en el foro de Java en Foros del Web. Hola estoy aprendiendo a usar Java, mediante el libro de Deitel, pero me quede trabado en un ejemplo, es el promedio de 10 numeros. Este ...
  #1 (permalink)  
Antiguo 25/08/2010, 13:51
 
Fecha de Ingreso: septiembre-2008
Mensajes: 7
Antigüedad: 16 años, 1 mes
Puntos: 0
Exclamación Solucionar codigo de un programa en consola

Hola estoy aprendiendo a usar Java, mediante el libro de Deitel, pero me quede trabado en un ejemplo, es el promedio de 10 numeros.

Este es el codigo que estoy usando:

Código PHP:
package prueba.ciclos;

import java.io.*;

public class 
Ciclos
{
    public static 
void main(String args[]) throws IOException
    
{
        
int cnotatotalpromedio;
        
total 0;
        
1;
        
// fase de procedimiento
        
while (<= 10)
        {
            
System.out.print("Teclee calificacion de letras: ");
            
System.out.flush();
            
nota System.in.read();

            if (
nota == 'A')
                
total total 4;
            else if (
nota == 'B')
                
total total 3;
            else if (
nota == 'C')
                
total total 2;
            else if (
nota == 'D')
                
total total 1;
            else if (
nota == 'F')
                
total total 0;

            
System.in.skip);
            
1;
        }
        
promedio total 10;
        
System.out.println("El promedio del grupo es " promedio);
     }

Cuando lo ejecuto sale asi:

Teclee calificacion de letras: A
Teclee calificacion de letras: Teclee calificacion de letras: A
Teclee calificacion de letras: Teclee calificacion de letras: A
Teclee calificacion de letras: Teclee calificacion de letras: A
Teclee calificacion de letras: Teclee calificacion de letras: A
Teclee calificacion de letras: El promedio del grupo es 2

En otras palabras el primero me sale bien, luego en el segundo salen dos veces el mismo enunciado y solo puedo ingresar una sola cosa, cuando deberia pedirme los datos asi:

Teclee calificacion de letras: A
Teclee calificacion de letras: A
Teclee calificacion de letras: A
Teclee calificacion de letras: A
Teclee calificacion de letras: A
Teclee calificacion de letras: A
Teclee calificacion de letras: A
Teclee calificacion de letras: A
Teclee calificacion de letras: A
Teclee calificacion de letras: A

El promedio del grupo es 4

Ahora bien, se que hay varias maneras de hacer el mismo algoritmo pero quiero con el mismo que mostre arriba, ver si algo esta mal, cambiar algun valor agregar algo, pero sin modificar mucho el codigo.

Muchas gracias, por si acaso uso el netbeans 6.9.1 y java ult version.

Gracias.
  #2 (permalink)  
Antiguo 25/08/2010, 15:58
 
Fecha de Ingreso: agosto-2010
Mensajes: 126
Antigüedad: 14 años, 3 meses
Puntos: 9
Respuesta: Solucionar codigo de un programa en consola

tenes razón al decir que hay muchas forma de resolverlo yo voy a utilizar una de las tantas soluciones.


public static void main(String[] args) throws IOException {
// TODO code application logic here
int c, total, promedio;
total = 0;
c = 1;
char nota ;
// fase de procedimiento
while (c <= 10)
{
BufferedReader rd = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Teclee calificacion de letras: ");
String s = rd.readLine();
nota = s.charAt(0);
if (nota == 'A')
total = total + 4;
else if (nota == 'B')
total = total + 3;
else if (nota == 'C')
total = total + 2;
else if (nota == 'D')
total = total + 1;
else if (nota == 'F')
total = total + 0;
c = c + 1;
}
promedio = total / 10;
System.out.println("El promedio del grupo es " + promedio);
}


espero que te funcione ahora...
  #3 (permalink)  
Antiguo 25/08/2010, 16:43
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 6 meses
Puntos: 306
Respuesta: Solucionar codigo de un programa en consola

Os complicáis la vida en exceso para leer valores por teclado.

Utilizad Scanner, paquete java.util

http://cupi2.uniandes.edu.co/~cupi2/...l/Scanner.html
  #4 (permalink)  
Antiguo 25/08/2010, 19:34
 
Fecha de Ingreso: septiembre-2008
Mensajes: 7
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Solucionar codigo de un programa en consola

Por eso mismo mencione:

Ahora bien, se que hay varias maneras de hacer el mismo algoritmo pero quiero con el mismo que mostre arriba, ver si algo esta mal, cambiar algun valor agregar algo, pero sin modificar mucho el codigo.

Lo que quiero decir que de mal esta en el codigo presentado, no quiero otras soluciones. Mi problema es porque sale asi como esta, solo pido eso, que me digan esta parte esta mal o esta incompleta.

Gracias por haberme leido y espero me comprendan.

Saludos.
  #5 (permalink)  
Antiguo 25/08/2010, 20:44
 
Fecha de Ingreso: agosto-2010
Mensajes: 126
Antigüedad: 14 años, 3 meses
Puntos: 9
Respuesta: Solucionar codigo de un programa en consola

le hice algunas modificaciones a tu código y ahora ya esta funcionando bien..

lo que tenes que hacer es copiarlo y luego lo probas y veras que ya no tiene el problema de antes...
  #6 (permalink)  
Antiguo 25/08/2010, 23:13
 
Fecha de Ingreso: septiembre-2008
Mensajes: 7
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Solucionar codigo de un programa en consola

Te refieres al que pusiste antes?. Pero porque mi codigo no funciona... :(. Yo quiero que funcione usando System.out.flush.
  #7 (permalink)  
Antiguo 26/08/2010, 02:02
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 6 meses
Puntos: 306
Respuesta: Solucionar codigo de un programa en consola

Tu problema está en el skip, cuando introduces un caracter, también introduces el haber pulsado ENTER. Java interpreta este ENTER como dos caracteres y tú sólo estás haciendo skip de 1. Sólo tienes que poner un skip(2)

Y el flush(), con un out.print, no hace nada.
  #8 (permalink)  
Antiguo 26/08/2010, 08:24
 
Fecha de Ingreso: septiembre-2008
Mensajes: 7
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Solucionar codigo de un programa en consola

En otras palabras, no sirve de nada el flush?, entonces para que esta ahi....?
Si pongo Skip(2), pasa lo mismo, me sigue saliendo 2 veces el enunciado, y solo puedo poner una sola vez.

Gracias por tu ayuda.
  #9 (permalink)  
Antiguo 26/08/2010, 08:49
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 6 meses
Puntos: 306
Respuesta: Solucionar codigo de un programa en consola

Yo lo he probado en eclipse, pero no desde consola propiamente dicha, y me funciona

Código Javascript:
Ver original
  1. System.out.print("Teclee calificacion de letras: ");
  2.             //System.out.flush();
  3.             nota = System.in.read();
  4.  
  5.             if (nota == 'A')
  6.                 total = total + 4;
  7.             else if (nota == 'B')
  8.                 total = total + 3;
  9.             else if (nota == 'C')
  10.                 total = total + 2;
  11.             else if (nota == 'D')
  12.                 total = total + 1;
  13.             else if (nota == 'F')
  14.                 total = total + 0;
  15.  
  16.             System.in.skip( 2 );
  17.             c = c + 1;

System.out es un PrintStream, pero hay otros con distintas configuraciones. Éste por ejemplo

http://download.oracle.com/javase/1....intStream.html

Cita:
Unlike other output streams, a PrintStream never throws an IOException;
El flush lo que hace es vaciar el contenido, pero se puede hacer que esto sea automático

Cita:
a PrintStream can be created so as to flush automatically
Creo que en el caso de System.out es así, por lo que no necesitas forzarlo, pero desconozco si funciona igual cuando se ejecuta desde una consola pero sin estar en un IDE.
  #10 (permalink)  
Antiguo 26/08/2010, 09:59
 
Fecha de Ingreso: septiembre-2008
Mensajes: 7
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Solucionar codigo de un programa en consola

Puedes explicarte mejor? Yo lo uso en Netbeans la ultima version, no use nunca eclipse, me recomiendas que lo descarga la version para java y pruebe de nuevo el codigo?

Gracias por responder.
  #11 (permalink)  
Antiguo 26/08/2010, 18:06
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 6 meses
Puntos: 306
Respuesta: Solucionar codigo de un programa en consola

Es cuestión de gustos, a mí me pareció que Netbeans era más pesado que Eclipse, me dio la impresión de que tardaba mucho más en hacer las cosas, aunque no lo he probado en profundidad.

Si pruebas Eclipse, y tienes pensado hacer algo de J2EE bájate la versión Galileo.

http://www.eclipse.org/downloads/pac...lopers/heliosr

Del resto, no sé si quieres que explique algo más de tu problema, aunque poco más tengo que añadir, con el trozo de código que te puse a mí me funcionaba perfectamente.

De todas formas, me parece muy extraño que algo funcione en Eclipse y no en Netbeans, son IDEs, te ayudan a programar, pero la ejecución sigue dependiendo de la JVM.

Etiquetas: consola, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:13.