Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Kabuto

Páginas: 1 ... 34 35 36 37 38 [39] 40 41 42 43 44 ... 50
761
Tienes diversos errores, el principal es que las variables j y k que usas como contadores, se reinician a 0 cada vez que invocas al método parImpar().

Y además, en la variable "leer" solo tienes un número. Da igual si pides 3 números, o si pides 300... solo vas a tener almacenado el último número leído.

Si quieres almacenar varios números, necesitas poner un array.

Sin embargo, en realidad no necesitas ningún array. Si lo que quieres es una clase que evalúe números introducidos por el usuario y luego te diga cuántos pares e impares ha encontrado, solo necesitas crear una clase con dos atributos: uno para contar pares y otro para contar impares.

Y que tenga dos métodos, uno para evaluar números y otro para que muestre en pantalla cuantos pares e impares lleva contados.
Algo así:

Código: [Seleccionar]
public class CuentaParesImpares {

private int pares;
private int impares;

public CuentaParesImpares() {
pares = 0;
impares = 0;
}

public void parImpar(int numero) {
if (numero %2 == 0)
pares++;
else
impares++;
}

public void resultados() {
System.out.println("Pares encontrados: " + pares);
System.out.println("Impares encontrados: " + impares);
}

}

Y se puede poner a prueba en este main:

Código: [Seleccionar]
public class Test {

public static void main(String[] args) {
CuentaParesImpares cpi = new CuentaParesImpares();
Scanner teclado = new Scanner(System.in);

//Pedimos 5 numeros
for (int i = 0; i < 5; i++) {
System.out.print("Introduzca número: ");
cpi.parImpar(teclado.nextInt());
}

//Mostramos resultado
System.out.println("\nResultados:");
cpi.resultados();

teclado.close();
}

}

Y tenemos este resultado en pantalla:
Código: [Seleccionar]
Introduzca número: 2
Introduzca número: 12
Introduzca número: 3
Introduzca número: 30
Introduzca número: 1

Resultados:
Pares encontrados: 3
Impares encontrados: 2


Esta es una solución prescindiendo de un array, ya que como vemos, no es necesario.
Puede que el enunciado de tu ejercicio te pida usar un array, entonces sí habría que enfocarlo de otro modo.

762
Aprender a programar desde cero / Re:genererar numeros con Math.random
« en: 24 de Septiembre 2019, 16:12 »
Hola.

Aquí te dejo un método para generar aleatorios entre dos valores, más un método main() para ponerlo a prueba.
El método recibe dos parámetros:
desde, valor inicial que queda excluido.
hasta, valor final que queda incluido.

Los valores han de pasarse en orden numérico, es decir, si un valor es negativo y el otro positivo, el negativo va primero (en el desde).

Código: [Seleccionar]
public class RandomNeg {

static int generaNumeros(int desde, int hasta) {
return (int)(Math.random()*(hasta-desde+1)+desde);
}

public static void main(String[] args) {
System.out.println("Generando 30 números desde -8 hasta 0...");
for (int i = 0; i < 30; i++)
System.out.println(generaNumeros(-8, 0));

System.out.println("\n----------------------------\n");

System.out.println("Generando 30 números desde -10 hasta 3...");
for (int i = 0; i < 30; i++)
System.out.println(generaNumeros(-10, 3));
}
}

763
Citar
me sale este error:
unir.ingreso(leer,i);//llama a la clase void ingreso

Ese error significa que el método ingreso() está programado para recibir un int por paréntesis.

Código: [Seleccionar]
  public void ingreso(int x){
      leer=x;
                                   }

Pero tú le estás pasando dos: leer e i

Quita la i del paréntesis, no puede aceptarla y además no la necesita.

764
Aprender a programar desde cero / Re:Ayuda [Eliminar Cliente]
« en: 20 de Septiembre 2019, 23:14 »
Intento explicarte visualmente el problema.

Mira, este sería el array de Clientes nada más empezar el programa:

| null | null | null | null | null | null | null | null | null | null |

Son 10 posiciones que contienen objetos de la clase Cliente. Y como al principio estos objetos aún no han sido iniciados (todavía no has añadido Clientes) pues comienzan con valor null.

Para añadir Clientes hay que controlar en cual de las 10 posiciones (que van de 0 a 9) se va a registrar el nuevo Cliente. Para controlar esto, podemos usar una variable int que empiece con valor 0, ya que esa sería la primera posición disponible.
Citar
int pos = 0;

Bien, vamos a añadir el primer Cliente. Lo haremos donde nos diga la variable pos, es decir, en la posición 0.

Código: [Seleccionar]
clientes[pos] = new Cliente("Cliente_00");
| Cliente _00| null | null | null | null | null | null | null | null | null |

Al añadir un cliente, incrementamos la variable pos:
Código: [Seleccionar]
pos++;
Ahora pos tiene valor 1. De este modo, pos sirve para decirnos cuantos clientes tenemos registrados (ahora mismo solo 1) y también sirve para que el programa sepa en que posición ha de registrar el próximo cliente (en la posición 1 del array).

Guau, aparentemente usando esta lógica, todo es perfecto. Sigamos añadiendo Clientes, vamos a añadir tres clientes más...

| Cliente_00 | Cliente_01 | Cliente_02 | Cliente_03 | null | null | null | null | null | null |

Tras añadir tres clientes, ahora pos tendría valor 4. Es decir, tenemos 4 clientes y el próximo se ha de añadir en la posición 4.
Todo funciona de maravilla.

Pero ahora vamos a "borrar" un cliente.
Si nos piden borrar Cliente_03, no habrá problema. En su posición actual establecemos valor null y a la variable pos le restamos -1.
Para averiguar donde está el cliente llamado "CLiente_03", usamos un bucle


Código: [Seleccionar]
int buscar = 0;
for (int j = 0; j < clientes.length; j++) {
    if (clientes[j].getNombre().equals("Cliente_03"))
        buscar = j; //Si el nombre coincide, hemos encontrado la posición donde hay que borrar
}
clientes[buscar] = null;
pos--;

| Cliente_00 | Cliente_01 | Cliente_02 | null | null | null | null | null | null | null |

Todo queda guay. Variable pos ahora tiene valor 3, porque tenemos 3 Clientes y si añadimos un cliente,  ha de ir en la posición 3.
Sin problemas....

Volvamos al array con todos los clientes:
| Cliente_00 | Cliente_01 | Cliente_02 | Cliente_03 | null | null | null | null | null | null |
Recordamos, aquí pos tiene valor 4

¿Y si el cliente que quieren borrar es Cliente_01?
Bueno, hacemos como antes, ¿no? Buscamos su posición, ponemos valor null y restamos -1 a pos

| Cliente_00 | null | Cliente_02 | Cliente_03 | null | null | null | null | null | null |

Ahora pos tiene valor 3, porque tenemos tres clientes. Pero, aquí es donde viene el problema, si queremos insertar un nuevo cliente, pos dice que ha de ir en la posicion 3
Ouch..!!  :o

Eso no puede ser, en la posición 3 tenemos a Cliente_03. Si añadimos un nuevo cliente, debería entrar en la posición 1, donde tenemos el valor null del cliente anterior que hemos borrado.
O en todo caso en la posición 4 que está libre....

¿Ves el problema que conlleva usar arrays? Para hacer algo como añadir y "borrar" clientes, hay que buscar una fórmula para saber bien en que posiciones se puede grabar un nuevo cliente.

Usar una variable como estaba haciendo ahora para contar los clientes que se añaden y borran, puede servir, pero tiene el inconveniente de que si se borra un cliente que no es el último existente en el array, ya no sabrá indicarnos la posición correcta donde se ha de guardar.

Esto se puede solventar de distintas formas.
Una forma sería reordenar todos los elementos cada vez que nos pidan borrar un cliente, de forma que los elementos null siempre queden al final.
Así la variable que usemos para contar, siempre apuntará a la primera posición disponible

Otra forma sería no guiarnos por esta variable para añadir clientes, sino que antes de añadir buscamos en el array la primera posición que sea null, y ahí metemos al cliente.

Código: [Seleccionar]
for (int j = 0; j < clientes.length; j++) {
    if (clientes[j] == null)
        clientes[j] = new Cliente("Fulanito");
}

Esta forma es quizás más fácil, pero hay que contemplar la posibilidad de que pasa si ya no quedan posiciones null disponibles porque el array ya está lleno.
Para esto lo más fácil es de nuevo usar una variable contador como hacíamos al principio, solo que esta variable no la usaremos para decidir en que posiciones se guardan clientes.
Solo servirá para saber de formar rápida cuantos clientes tenemos en todo momento.
Porque si resulta que ya tenemos los 10 clientes, no vamos a perder el tiempo en buscar posiciones null, porque no las hay.

Código: [Seleccionar]
if (cuentaClientes == 10)
    System.out.println("No caben más clientes, hay que borrar para poder añadir otro cliente");
else {
    for (int j = 0; j < clientes.length; j++) {
        if (clientes[j] == null)
            clientes[j] = new Cliente("Fulanito");
    }
    cuentaClientes++;  //Aumenta porque hemos añadido nuevo Cliente
}


Perdón si la explicación es demasiado extensa. Espero que se haya entendido.

Intenta tú ahora escribir el código final según tu programa actual. Si no lo consigues, intentaremos ayudarte.
Un saludo.

765
Aprender a programar desde cero / Re:Ayuda [Eliminar Cliente]
« en: 19 de Septiembre 2019, 00:57 »
Hola.

¿Los objetos Cliente y Producto tienes que guardarlos obligatoriamente en arrays simples?
¿O puedes usar otras estructuras dinámicas como las clases Vector o ArrayList?

Lo digo porque los arrays simples son estructuras estáticas. Siempre tienen el mismo tamaño y en realidad no puedes borrar nada.
Tus arrays SIEMPRE van a tener 10 objetos Cliente y 10 objetos Producto. Puedes darles valor null y así simular que han sido borrados. Pero no es un borrado real y cuando quieras hacer un listado, tendrás que controlar que posiciones del array tienen valor null (han sido borrados) y cuáles no.

Con estructuras dinámicas te ahorrar estos problemas. Son muy parecidos a los array simples, pero no tienen un tamaño fijo. Crecen o decrecen según añades o borras elementos, no hay que simular borrados nulleando elementos.

766
Hola.

La clase Integer tiene varios métodos estáticos, es decir, métodos que se pueden invocar sin necesidad de crear previamente un objeto de dicha clase.

Uno de ellos es el método parseInt() el cuál recibe como argumento un String y lo parsea (convierte, transforma... llámalo como quieras) a un valor int, si es que es posible.

Invocando este método te ahorras el tener que crear un objeto Integer previamente.
Código: [Seleccionar]
public class ejemplo1 {
public static void main(String[] Args) {
String entradaUsuario = JOptionPane.showInputDialog("Introduzca un número:");
System.out.println("El doble del número introducido es: " + 2 * Integer.parseInt(entradaUsuario) );
}
}

767
Aprender a programar desde cero / Re:brackets
« en: 30 de Agosto 2019, 01:01 »
Vale. Ahora recuerdo....

Brackets usa ESLint para comprobar que el código cumple ciertas reglas, pero a veces muestra errores que no son tal, y al final resulta más molesto que otra cosa. Así que yo lo desactivé, pero no lo recordaba...  :P

Haz dos cosas:
En el menú "Ver", desactiva la opción "Inspeccionar el código al guardar"

Luego en el menú "Desarrollo", dale a "Abrir archivo de preferencias".
Debería mostrarte  dos archivos:
uno llamado defaultPreferences.json. Este no puedes ni debes modificarlo, ignóralo.

Otro se llama brackets.json. Aquí verás una línea que pone:
"brackets-eslint.gutterMarks": true,

Pues ese true, cámbialo por un false.

Si no te aparece este archivo brackets.json, búscalo manualmente. Suele estar en la ruta: C:\Users\[tu nombre de usuario]\AppData\Roaming\Brackets
(Esto si usas Windows, en otros S.O. no idea de donde estará)

Con estos cambios, el ESLint no inspeccionará tu código. Quizás haya formas de configurar EsLint de forma más adecuada, lo desconozco.

Yo no lo necesito (aunque hago uso muy básico de JS), me basta con apoyarme en el texto predictivo de Brackets y en el sistema de colores. Si escribo "function" correctamente me sale con un color especial indicando que es palabra reservada. Pero si lo escribo mal, por ejemplo, "funtion" me sale con color de texto normal, y eso ya me alerta de que me he equivocado.


Otra opción si no quieres prescindir de EsLint es ignorar estos "errores" que no son tal. Total, quien decide si el JavaScript funciona o no, es el navegador que ejecuta la página web, no el editor de texto.

Los cambios para activar/desactivar EsLint ya has visto que son muy sencillos, puedes probar a trabajar de ambas formas, activado y desactivado, y decidir cuál prefieres.

Si lo necesitas y crees que puedes "soportar" sus globitos rojos de aviso, actívalo.

Si ves que no te hace falta y que con la ayuda de Brackets puedes escribir código js sin equivocarte, pues desactívalo.

768
Aprender a programar desde cero / Re:brackets
« en: 29 de Agosto 2019, 00:09 »
Hola.
Que raro, yo también uso Brackets para hacer mis tonterías en HMTL y JS. Y no tengo ese problema.

¿Donde tienes puesto el alert()? ¿El documento está guardado como .html o . js?

¿Puedes pegar aquí el código donde lo tienes puesto?

769
Sería interesante que mostrases aquí el código que hayas escrito, por muy incompleto y/o erróneo que pueda ser, para poder indicarte donde te equivocas y cómo corregirlo.

Además nos sirve para dar una idea de en que punto de aprendizaje te encuentras, para así resolverlo de una manera o de otra.
Por ejemplo, supongo que aún no has llegado a Programación Orientada a Objetos, por lo que crear una clase Alumno quedaría descartado.

Por el enunciado supongo que lo que se pretende es practicar operaciones con arrays y matrices.

El programa debería pedir datos para registrar 5 alumnos.
Nombres de alumno y materias se podrían guardar en arrays separados con longitud 5 (ya que son 5 alumnos) y de tipo String.
Aunque luego de todos modos no se va a hacer casi nada con estos datos.

Por cada alumno se piden 2 notas y con ellas se hace el calcula de una tercera nota.
Así que cada alumno tiene 3 notas. Estas notas se pueden guardar en una matriz de 5 x 3.
Es en esta matriz donde se harán todas las operaciones que pide el enunciado.

Empieza por crear esta parte del programa. Registro de 5 alumnos, nombre, materia y 2 notas para calcular la tercera.
Y guardarlo todo correctamente en arrays y matriz

Una vez tengas esto, se mostraría al usuario un menú de 4 opciones.
Se le pide al usuario que elija opción y según lo que pida se llama a la función/método correspondiente que se encargará de  hacer lo que se pida.
Habrá una función para:
- calcular Nota Promedio mas alta.
- mostrar las tres notas más bajas
- ordenar las Notas 1 de mayor a menor.

Cada función es independiente y tiene que encargarse únicamente de su cometido.



Te propongo aquí una solución en base a esto. Siempre será mejor que intentes resolverlo tú, aunque no lo consigas e ir preguntando como avanzar cuando te atasques.
Pero puedes ayudarte mirando mi código.
Si algo no lo entiendes, solo tienes que preguntarlo.

Pego aquí el código.

Código: [Seleccionar]
//https://aprenderaprogramar.com/foros/index.php?topic=7374.msg26903#new

package registrarAlumnos;

import java.util.Scanner;

public class Registros {

/*Variables principales*/

//Nombre de los alumnos
static String[] nombres = new String[5];
//Materias que cursan los alumnos
static String[] materias = new String[5];
//Matriz con las 3 notas de los 5 alumnos
static double[][] notas = new double[5][3];

/*Método main*/
public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);

//Registramos 5 alumnos
for (int i = 0; i < 5; i++) {
System.out.println("Registrando alumno #" + (i+1));
System.out.print("Nombre: ");
nombres[i] = teclado.nextLine();
System.out.print("Materia: ");
materias[i] = teclado.nextLine();
System.out.print("Nota 1: ");
notas[i][0] = Double.parseDouble(teclado.nextLine());
System.out.print("Nota 2: ");
notas[i][1] = Double.parseDouble(teclado.nextLine());
//La Nota 3 se autocalcula según formula.
notas[i][2] = (((((notas[i][0]+notas[i][1])/2)+0.5))*2)/2;
System.out.println("Valor autocalculado para Nota 3: " + notas[i][2]);
System.out.println("Alumno registrado...\n");
}

//Finalizado registro, abrimos menú de opciones
int opcion = 0;
do {
System.out.println("\n\n\t\tMENU OPCIONES\n");
System.out.println("[1] Mostrar nota promedio más alta.");
System.out.println("[2] Mostrar las 3 notas más bajas.");
System.out.println("[3] Ordenar de mayor a menor Nota 1.");
System.out.println("[4] SALIR.");
System.out.print("Elija opcion: ");
opcion = Integer.parseInt(teclado.nextLine());
switch(opcion) {
case 1:
notaPromedioMasAlta();
break;
case 2:
tresNotasMasBajas();
break;
case 3:
ordenaNota1();
break;
case 4:
System.out.println("\n\t\tFIN DE PROGRAMA");
break;
default:
System.out.println("\nOpcion equivocada. Escoja entre [1-4]");
}
}while(opcion != 4);

teclado.close();
}

/*Métodos para funciones del menú*/

private static void notaPromedioMasAlta() {
/*
* Calculamos el promedio de cada Alumno
* y nos quedaremos con la más alta.
*/
double masAlta = 0;
int alumno = 0;

for (int i = 0; i < notas.length; i++) {
double sumaNotas = notas[i][0] + notas[i][1] + notas[i][2];
double promedio = sumaNotas / 3;
if (promedio > masAlta) {
masAlta = promedio;
alumno = i;
}
}

System.out.printf("\nNota promedio más alta: %.2f\n", masAlta);
System.out.println("Alumno: " + nombres[alumno]);
}

private static void tresNotasMasBajas() {
/*
* Una forma de obtener las tres notas más bajas
* sería construir un array unidimensional con todas
* las notas, ordenarlo de menor a mayor, y mostrar
* las tres primeras tras haber ordenado.
*/

//Construimos array con todas las notas
double[] todasNotas = new double[15]; //5 alumnos, 3 notas: 5x3 = 15 notas
int z = 0; //Indice para el array unidimenional
for (int i = 0; i < notas.length; i++)
for (int j = 0; j < notas[0].length; j++) {
todasNotas[z] = notas[i][j];
z++;
}
//Array construido, ordenamos de menor a mayor
for (int i = 0; i < todasNotas.length -1; i++) {
for (int j = 0; j < todasNotas.length-i-1; j++) {
if (todasNotas[j + 1] < todasNotas[j]) {
double aux = todasNotas[j + 1];
todasNotas[j + 1] = todasNotas[j];
todasNotas[j] = aux;
}
}
}
//Array ordenado, mostramos los tres primeros

System.out.println("\nLas tres notas más bajas son:");
for (int i = 0; i < 3; i++) {
System.out.println("- " + todasNotas[i]);
}
}

private static void ordenaNota1() {
/*
* Construimos array solo con notas 1
* y ordenamos de mayor a menor
*/

double[] notas1 = new double[5];
for (int i = 0; i < 5; i++)
notas1[i] = notas[i][0];
//Ordenamos
for (int i = 0; i < notas1.length -1; i++) {
for (int j = 0; j < notas1.length-i-1; j++) {
if (notas1[j + 1] > notas1[j]) {
double aux = notas1[j + 1];
notas1[j + 1] = notas1[j];
notas1[j] = aux;
}
}
}

//Mostramos
System.out.println("\nNotas 1 de MAYOR a MENOR:");
for (int i = 0; i < 5; i++)
System.out.print(notas1[i] + " ");
}
}

770
De todo un poco... / Re:No logro descarga notepad++
« en: 21 de Agosto 2019, 11:01 »
Vale.

Notepad++ es solo para Windows. No hay versión Mac que yo sepa.

Pero tienes otras muchas alternativas. Una que me gusta mucho, y que yo también uso en Windows es Brackets: http://brackets.io

Cuando te acostumbras a sus funcionalidades (y eso que yo le doy un uso básico) es toda una gozada

771
De todo un poco... / Re:No logro descarga notepad++
« en: 21 de Agosto 2019, 00:14 »
Pero, ¿Y cuál es tu sistema operativo?

772
Aprender a programar desde cero / Re:Descarga de Java SE
« en: 11 de Agosto 2019, 00:14 »
 Hola.
No se que enlace estarás usando, pero desde este no deberías tener problema:
https://www.oracle.com/technetwork/java/javase/downloads/jdk12-downloads-5295953.html

Al entrar en esa página, abajo has de marcar la opción "Accept License Agreement" y luego elegir la versión acorde a tu sistema operativo.

773
Aprender a programar desde cero / Re:Ejercicio CU00669B
« en: 08 de Agosto 2019, 01:30 »
Porque este
Código: [Seleccionar]
String mesSecreto = meses[9-1]; si en el enunciado decía 9 nomas ya que al declarar asi el mes cambio a septiembre ya que resta 1 al mes.-

Para el ejercicio, se puede elegir el mes secreto que cada uno quiera escoger.
En este caso, en lugar de 9-1 podría haber puesto directamente un 8, pero bueno, cada uno escribe su código como prefiera.

774
Continuamos.

Ya tenemos las clases, ahora hay que crear el programa principal.
El programa tendrá dos tareas.
La primera, crear automáticamente objetos PERSONA, EMPLEADO, FACTURA, PRODUCTO...

Dichos objetos los guardaremos en alguna colección de datos dinámica, por ejemplo en ArrayList.
Para crear esos objetos, haremos varias funciones donde crearemos objetos de cada clase y las añadiremos a los ArrayList.
Lo primero que hará nuestro main() será llamar a estas funciones para que vayan llenando los ArrayList con datos.

Terminado esto, pasamos a la segunda tarea, que es simplemente mostrar un menú al usuario dentro de un bucle para que elija las opciones que quiera hasta que decida terminar el programa.
El menú tiene que ofrecer consultar EMPLEADOS, PERSONAS(Clientes), y PRODUCTOS
Yo simplemente lo que hago es recorrer el ArrayList correspondiente y mostrar los datos de los objetos que contiene. Gracias a que a cada clase le hemos creado un método toString(), ahora nos va a bastar con un par de líneas de código para cada opción.

Hay otra opción más que ofrecer, que es la de mostrar FACTURAS según la PERSONA/Cliente.
Yo lo que hago es pedir al usuario un número de cédula. Compruebo en el ArrayList si existe una PERSONA con esa cédula.
Si existe, uso esa PERSONA para consultar el ArrayList de FACTURAS. A cada una de ellas le pido que me devuelva la PERSONA asociada y la comparo con la PERSONA que me ha indicado el usuario. Si coinciden (método equals() facilita esta comparación) mando imprimir en pantalla los datos de esa FACTURA y paso a la siguiente.

Y ya está, creo que no es difícil de entender. Aquí dejo mi código y cualquier duda, tan solo tienes que preguntarla.
Un saludo.

Código: [Seleccionar]
public class GestionRestaurante {

static ArrayList<Empleado> empleados = new ArrayList<Empleado>();
static ArrayList<Persona> clientes = new ArrayList<Persona>();
static ArrayList<Producto> productos = new ArrayList<Producto>();
static ArrayList<Factura> facturas = new ArrayList<Factura>();

public static void main(String[] args) {
//Inicializamos datos
crearEmpleados();
crearClientes();
crearProductos();
crearFacturas();
//Comienza el menú principal
Scanner teclado = new Scanner(System.in);
int opcion = 0;
while (opcion != 5) {
System.out.println("\n\t\tOPCIONES");
System.out.println("(1) Consultar Empleados");
System.out.println("(2) Consultar Productos");
System.out.println("(3) Consultar Clientes");
System.out.println("(4) Consultar Facturas por Cliente");
System.out.println("(5) TERMINAR PROGRAMA");
System.out.print("Seleccione opción (1-5): ");
opcion = Integer.parseInt(teclado.nextLine());
switch(opcion) {
case 1:
System.out.println("\n\t\tCONSULTAR EMPLEADOS");
for (Empleado emp: empleados) {
if (emp instanceof Chef)
System.out.println("\nTipo empleado: Chef");
else
System.out.println("\nTipo empleado: Mesero");
System.out.println(emp);
}
break;
case 2:
System.out.println("\n\t\tCONSULTAR PRODUCTOS");
for (Producto prod: productos)
System.out.println("\n" + prod);
break;
case 3:
System.out.println("\n\t\tCONSULTAR CLIENTES");
for (Persona cli: clientes)
System.out.println("\n" + cli);
break;
case 4:
System.out.println("\n\t\tCONSULTAR FACTURAS POR CLIENTE");
System.out.print("\nIndique cédula de cliente: ");
String cedula = teclado.nextLine();
//Buscamos cliente a ver si existe
Persona cliente = null;
for (Persona cli: clientes)
if (cli.getCedula().equals(cedula))
cliente = cli; //Encontrado, lo referenciamos en la variable cliente
//Comprobamos si lo hemos encontrado
if (cliente == null)
System.out.println("No se encontro cliente con cédula: " + cedula);
else {
//Mostramos facturas de esta Persona cliente
System.out.println("\n\tFacturas asociadas al Cliente:");
for (Factura fac: facturas) {
if (fac.getCliente().equals(cliente))
System.out.println(fac);
}
}
break;
case 5:
System.out.println("\n\n\t\tFIN DE PROGRAMA");
break;
default:
System.out.println("\nOpción equivocada, elija entre 1-5");
}
}

teclado.close();

}

static void crearEmpleados() {
empleados.add(new Mesero("CED00", "Ramón", "Espinosa", 850));
empleados.add(new Mesero("CED01", "Susana", "López", 850));
empleados.add(new Chef("CED02", "Carlos", "Santana", 975));
empleados.add(new Chef("CED03", "María", "Reina", 975));
}

static void crearClientes() {
clientes.add(new Persona("CED04", "Federico", "fede@gmail.com"));
clientes.add(new Persona("CED05", "Cristina", "cristi@gmail.com"));
clientes.add(new Persona("CED06", "Raul", "raul@gmail.com"));
}

static void crearProductos() {
productos.add(new Producto("COD000", "Raviolis", "Ravioli, Ternera, Tomate, Salsa Queso",
"Nata", "Italia"));
productos.add(new Producto("COD010", "Pelmeni", "Carne Pollo, Sal, Harina, Aceite Oliva, Huevo",
"Cebolla picada", "Rusia"));
productos.add(new Producto("COD020", "Udon", "Fideos, Aceite, Ajo, Jengibre, Brócoli, Soja",
"Setas Shiitake", "Japón"));
productos.add(new Producto("COD030", "Paella", "Arroz, Gambas, Mejillones, Calamares, Ajo",
"Azafrán", "España"));
//Seteamos el Chef creador para cada producto
productos.get(0).setChefCreador((Chef)empleados.get(2));
productos.get(1).setChefCreador((Chef)empleados.get(3));
productos.get(2).setChefCreador((Chef)empleados.get(2));
productos.get(3).setChefCreador((Chef)empleados.get(3));
}

static void crearFacturas() {
facturas.add(new Factura("FAC000", "07/08/2019", "Efectivo", clientes.get(0), (Mesero)empleados.get(1),
new Detalle(2, productos.get(2))));
facturas.add(new Factura("FAC001", "06/08/2019", "Tarjeta VISA", clientes.get(1), (Mesero)empleados.get(1),
new Detalle(3, productos.get(1))));
facturas.add(new Factura("FAC002", "05/08/2019", "Efectivo", clientes.get(0), (Mesero)empleados.get(0),
new Detalle(4, productos.get(0))));
facturas.add(new Factura("FAC003", "07/08/2019", "PayPal", clientes.get(2), (Mesero)empleados.get(0),
new Detalle(1, productos.get(0))));
facturas.add(new Factura("FAC004", "05/08/2019", "Efectivo", clientes.get(1), (Mesero)empleados.get(1),
new Detalle(3, productos.get(1))));
facturas.add(new Factura("FAC005", "04/08/2019", "PayPal", clientes.get(0), (Mesero)empleados.get(0),
new Detalle(2, productos.get(2))));
facturas.add(new Factura("FAC006", "05/08/2019", "Tarjeta VISA", clientes.get(1), (Mesero)empleados.get(0),
new Detalle(4, productos.get(1))));
facturas.add(new Factura("FAC007", "03/08/2019", "Efectivo", clientes.get(2), (Mesero)empleados.get(1),
new Detalle(2, productos.get(2))));
facturas.add(new Factura("FAC008", "04/08/2019", "Tarjeta VISA", clientes.get(0), (Mesero)empleados.get(0),
new Detalle(3, productos.get(1))));
}

}

775
Hola, lo primero es escribir las clases y entender como se relacionan entre ellas.

La clase más importante es FACTURA que se relaciona con, es decir, tendrá entre sus atributos, las siguientes clases:
- PERSONA, que es quien cancela (paga) la FACTURA.

- DETALLE, que a su vez se relaciona con el PRODUCTO facturado e indica su cantidad.
PRODUCTO además, se relaciona con CHEF, el EMPLEADO que cocinó el PRODUCTO

- MESERO, otro tipo de EMPLEADO que es quien entrega la FACTURA

Empezamos escribiendo la clase PERSONA que es la más básica y sencilla.
Podemos hacerle un constructor
que pida los atributos que consideremos obligatorios para crear un objeto PERSONA
Además, si queremos, podemos sobrescribir el método equals() para poder comparar objetos Persona y saber si son iguales o no. En este caso, podemos considerar que dos personas son iguales o equivalentes si tienen la misma cédula.
También sobrescribiremos el método toString() para indicar como queremos mostrar en pantalla los datos de esta PERSONA. Esto también lo haremos para el resto de clases para facilitar mostrar sus datos en pantalla.
Código: [Seleccionar]
public class Persona {

private String cedula;
private String nombre;
private String e_mail;
private String telefono;
private String direccion;

//Constructor con atributos obligados
public Persona(String cedula, String nombre, String e_mail) {
this.cedula = cedula;
this.nombre = nombre;
this.e_mail = e_mail;
telefono = "";
direccion = "";
}

public String getCedula() {
return cedula;
}

public void setCedula(String cedula) {
this.cedula = cedula;
}

public String getNombre() {
return nombre;
}

public void setNombre(String nombre) {
this.nombre = nombre;
}

public String getE_mail() {
return e_mail;
}

public void setE_mail(String e_mail) {
this.e_mail = e_mail;
}

public String getTelefono() {
return telefono;
}

public void setTelefono(String telefono) {
this.telefono = telefono;
}

public String getDireccion() {
return direccion;
}

public void setDireccion(String direccion) {
this.direccion = direccion;
}

@Override
public boolean equals(Object objeto) {
if (objeto instanceof Persona) {
Persona otraPersona = (Persona)objeto;
//Dos Persona serán iguales si tienen la misma cedula
return cedula.equals(otraPersona.getCedula());
}
else
return false;
}

@Override
public String toString() {
StringBuilder sb= new StringBuilder();
sb.append("\nCédula : " + cedula);
sb.append("\nNombre: " + nombre);
sb.append("\nE-Mail: " + e_mail);
sb.append("\nTeléfono: " + telefono);
sb.append("\nDirección: " + direccion);
return sb.toString();
}

}

Vamos a pasar ahora a los EMPLEADOS. Hay dos tipos, CHEF y MESERO, quienes tienen los mismos atributos, ya que los van a heredar de la clase EMPLEADO.
Aunque no es obligatorio, podemos definir la clase EMPLEADO como abstracta, ya que en principio no vamos a querer trabajar con objetos EMPLEADO, si no con los objetos "hijo" de EMPLEADO, es decir, CHEF y MESERO

Así que toda la declaración de atributos y métodos la haremos en EMPLEADO y la declararemos como abstracta. También podemos dotarla de un método equals() similar al que hemos hecho con PERSONA.

Código: [Seleccionar]
public abstract class Empleado {

private String cedula;
private String nombre;
private String apellido;
private double salario;

public Empleado(String cedula, String nombre, String apellido, double salario) {
this.cedula = cedula;
this.nombre = nombre;
this.apellido = apellido;
this.salario = salario;
}

public String getCedula() {
return cedula;
}

public void setCedula(String cedula) {
this.cedula = cedula;
}

public String getNombre() {
return nombre;
}

public void setNombre(String nombre) {
this.nombre = nombre;
}

public String getApellido() {
return apellido;
}

public void setApellido(String apellido) {
this.apellido = apellido;
}

public double getSalario() {
return salario;
}

public void setSalario(double salario) {
this.salario = salario;
}

@Override
public boolean equals(Object objeto) {
if (objeto instanceof Empleado) {
Empleado otroEmple = (Empleado)objeto;
return cedula.equals(otroEmple.getCedula());
}
else
return false;
}

@Override
public String toString() {
StringBuilder sb= new StringBuilder();
sb.append("\nCédula : " + cedula);
sb.append("\nNombre: " + nombre);
sb.append("\nApellido: " + apellido);
sb.append("\nSalario: " + salario);
return sb.toString();
}

}

Ahora seguimos con CHEF y MESERO, que son clases que simplemente tienen que heredar de EMPLEADO y obligatoriamente tener un constructor que pida los atributos exigidos por su superclase EMPLEADO

Código: [Seleccionar]
public class Chef extends Empleado{

public Chef(String cedula, String nombre, String apellido, double salario) {
super(cedula, nombre, apellido, salario);
}

}

Código: [Seleccionar]
public class Mesero extends Empleado{

public Mesero(String cedula, String nombre, String apellido, double salario) {
super(cedula, nombre, apellido, salario);
}

}


Pasamos a la clase PRODUCTO a quien incluiremos un CHEF entre sus atributos que identifica al creador de dicho PRODUCTO.
En el constructor no consideraremos obligatorio indicar un CHEF, aunque se lo podemos asignar después mediante su método setChef().
También tendrá sobrescrito el método equals()

Código: [Seleccionar]
public class Producto {

private String codigo;
private String nombreProducto;
private String receta;
private String ingredienteSecreto;
private String nacionalidad;
private Chef chefCreador;

public Producto(String codigo, String nombreProducto, String receta, String ingredienteSecreto,
String nacionalidad) {
this.codigo = codigo;
this.nombreProducto = nombreProducto;
this.receta = receta;
this.ingredienteSecreto = ingredienteSecreto;
this.nacionalidad = nacionalidad;
}

public String getCodigo() {
return codigo;
}

public void setCodigo(String codigo) {
this.codigo = codigo;
}

public String getNombreProducto() {
return nombreProducto;
}

public void setNombreProducto(String nombreProducto) {
this.nombreProducto = nombreProducto;
}

public String getReceta() {
return receta;
}

public void setReceta(String receta) {
this.receta = receta;
}

public String getIngredienteSecreto() {
return ingredienteSecreto;
}

public void setIngredienteSecreto(String ingredienteSecreto) {
this.ingredienteSecreto = ingredienteSecreto;
}

public String getNacionalidad() {
return nacionalidad;
}

public void setNacionalidad(String nacionalidad) {
this.nacionalidad = nacionalidad;
}

public Chef getChefCreador() {
return chefCreador;
}

public void setChefCreador(Chef chefCreador) {
this.chefCreador = chefCreador;
}

@Override
public boolean equals(Object objeto) {
if (objeto instanceof Producto) {
Producto otroProducto = (Producto)objeto;
return codigo.equals(otroProducto.getCodigo());
}
else
return false;
}

@Override
public String toString() {
StringBuilder sb= new StringBuilder();
sb.append("\nCódigo : " + codigo);
sb.append("\nNombre: " + nombreProducto);
sb.append("\nReceta: " + receta);
sb.append("\nIngrediente Secreto: " + ingredienteSecreto);
sb.append("\nNacionalidad: " + nacionalidad);
sb.append("\nCreado por el Chef: " + chefCreador.getNombre() + " " + chefCreador.getApellido());
return sb.toString();
}

}

La clase DETALLE es muy sencilla, tan solo necesitamos como atributos un PRODUCTO y un int para indicar las unidades de ese PRODUCTO que se van a facturar.
Código: [Seleccionar]
public class Detalle {

private int cantidad;
private Producto producto;

public Detalle(int cantidad, Producto producto) {
this.cantidad = cantidad;
this.producto = producto;
}

public int getCantidad() {
return cantidad;
}

public void setCantidad(int cantidad) {
this.cantidad = cantidad;
}

public Producto getProducto() {
return producto;
}

public void setProducto(Producto producto) {
this.producto = producto;
}

@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("\nCantidad servida: " + cantidad);
sb.append("\nProducto: " + producto.getNombreProducto());
return sb.toString();
}

}

Por último, llegamos a FACTURA, donde entre sus atributos tendremos una PERSONA que es el cliente que paga, un MESERO que ha atendido al CLIENTE, y el DETALLE de la factura con el PRODUCTO y unidades facturadas.
El atributo propina, no lo consideraré obligatorio incluirlo en el constructor.

Código: [Seleccionar]
public class Factura {

private String codigo;
private String fecha;
private double propina;
private String formaPago;
private Persona cliente;
private Mesero meseroEntrega;
private Detalle detalle;

public Factura(String codigo, String fecha, String formaPago, Persona cliente, Mesero meseroEntrega,
Detalle detalle) {
this.codigo = codigo;
this.fecha = fecha;
this.formaPago = formaPago;
this.cliente = cliente;
this.meseroEntrega = meseroEntrega;
this.detalle = detalle;
}

public String getCodigo() {
return codigo;
}

public void setCodigo(String codigo) {
this.codigo = codigo;
}

public String getFecha() {
return fecha;
}

public void setFecha(String fecha) {
this.fecha = fecha;
}

public double getPropina() {
return propina;
}

public void setPropina(double propina) {
this.propina = propina;
}

public String getFormaPago() {
return formaPago;
}

public void setFormaPago(String formaPago) {
this.formaPago = formaPago;
}

public Persona getCliente() {
return cliente;
}

public void setCliente(Persona cliente) {
this.cliente = cliente;
}

public Mesero getMeseroEntrega() {
return meseroEntrega;
}

public void setMeseroEntrega(Mesero meseroEntrega) {
this.meseroEntrega = meseroEntrega;
}

public Detalle getDetalle() {
return detalle;
}

public void setDetalle(Detalle detalle) {
this.detalle = detalle;
}

@Override
public boolean equals(Object objeto) {
if (objeto instanceof Factura) {
Factura otraFactura = (Factura)objeto;
return codigo.equals(otraFactura.getCodigo());
}
else
return false;
}

@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("\nCódigo Factura: " + codigo);
sb.append("\nFecha: " + fecha);
sb.append("\nForma de Pago: " + formaPago);
sb.append("\nMesero: " + meseroEntrega.getNombre() + " " + meseroEntrega.getApellido());
sb.append("\nDetalle Factura:");
sb.append(detalle);
return sb.toString();
}

}

Con esto ya tenemos todas las clases modeladas. Ahora habría que preparar el programa principal y darle funcionalidad.
Esto lo vemos en el siguiente mensaje.

776
En absoluto soy un experto, así que lo único que puedo darte es mi opinión.

Yo creo que no hay que imponerse unas reglas estrictas ni obsesionarse con aplicar la fórmula supuestamente correcta.

Yo también aprendí separando claramente. Hablo de separación totalmente estricta, creaba tres clases (tres archivos .java) llamadas Vista (donde se creaba la GUI), Modelo (donde se tenían los datos, ArrayLists, etc..) y Controlador(hacia de nexo entre las otras dos), más las clases necesarias para crear el resto del programa.
Tenía sus ventajas, pero en general, esa separación tan "excesiva" provocaba escribir muchos más métodos, muchos de los cuáles lo único que hacían era llamar a otro método equivalente declarado en otra clase.
A veces ocurría que la Vista pedía al Controlador, que llamase a un método del Modelo, el cuál a su vez lo que hacía era pedirle al Controlador que llamase a otro método de la Vista...demasiados pasos intermedios...

Con el tiempo fui prescindiendo de esta separación tan estricta ya que no era realmente necesaria para seguir aplicando el patrón MVC, incluso en una única clase se puede aplicar este patrón.
Cada programa es distinto y en cada uno de ellos veía que podía ser más o menos laxo con este patrón, si con ello conseguía que el programa fuese más eficiente e incluso más entendible al leer el código.

En definitiva, si te encuentras casos en los que ganas en eficiencia sin por ello perder eficacia (eficacia y eficiencia son cosas distintas) permitiendo que la Vista y Modelo se mezclen un poquito, pues no pasa nada.

De todos modos, conceptualmente hablando, da igual si Vista y Modelo están estrictamente separados o están totalmente mezclados.
La Vista siempre será lo que el usuario puede ver, la "fachada" del programa.
Y el Modelo siempre será lo que el usuario no puede ver, lo que ocurre internamente "entre bambalinas".

777
La API puedes descargarla de aquí:
https://www.oracle.com/technetwork/java/javase/documentation/jdk9-doc-downloads-3850606.html


Y los tutoriales Oracle de Java puedes descargarlos de aquí:
https://www.oracle.com/technetwork/java/javase/java-tutorial-downloads-2005894.html


En ambos casos son documentos HTML, así que necesitarás un navegador cualquier para visualizarlos.

778
Hola y bienvenido.

El primer consejo para aprender a programar, es tener paciencia para el aprendizaje.
El segundo consejo, el mismo, paciencia... ;D

Insisto en la paciencia porque empezar desde cero en la programación puede ser un poco desesperante. Hay que empezar desde el principio, desde lo más básico... entonces uno puede impacientarse y sentirse frustrado al ver las aplicaciones que se hacen para web, para móviles.... y uno va a estar durante bastante tiempo haciendo cosas muy simples como pedir un número y decir si es primo o no, y cosas así...

Por eso es necesaria la paciencia, el inicio es lento, pero luego la cosa se va acelerando y cada vez se asimilan mejor todos los nuevos conceptos que hay que aprender.

Echa un vistazo a los cursos disponibles


Sobre que lenguaje elegir para empezar.
Lo primero es entender que una cosa es aprender a programar, y otra cosa es aprender un lenguaje.
Son cosas distintas pero que se pueden hacer simultáneamente.

Los fundamentos de la programación son comunes a todos los lenguajes. Todos tienen variables, operadores matemáticos, operadores de comparación, bucles, funciones...
Luego cada lenguaje los implementa a su manera y con sus propias "palabras", pero los fundamentos son los mismos.

Así que lo ideal es empezar con pseudocódigo. Esto no es un lenguaje real de programación, simula ser un lenguaje pero usando palabras "humanas" y simplificándolo todo para que el aprendiz pueda centrarse en aprender programación, sin tener que lidiar las reglas de cada lenguaje.
El pseudocódigo no se compila, no te da un programa real (aunque hay interpretes como PseInt, es algo que escribes en un papel o en un documento de texto plano para simular un programa.

Por ejemplo, queremos hacer un programa que pida la edad por pantalla y diga si el usuario es mayor o menor de edad:
Código: [Seleccionar]
ESCRIBIR "Dime tu edad: "
LEER edad
SI edad < 18 ENTONCES
    ESCRIBIR "Eres menor de edad"
SI NO
    ESCRIBIR "Eres mayor de edad"

Esto es fácil de escribir y de entender. Sin complicaciones ninguna propias de cada lenguaje.
En pocas líneas vemos un ejemplo de mostrar un texto en pantalla, leer un dato en una variable y hacer una toma de decisiones al comparar esa variable con un determinado valor.

Si queremos hacer eso mismo pero en un lenguaje real, por ejemplo Java:

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

public class PedirEdad {

   public void main(String[] args) {
       
        Scanner leerTeclado = new Scanner(System.in);
        System.out.print("Dime tu edad: );
        int edad = leerTeclado.nextInt();
       
        if (edad < 18)
                System.out.println("Eres menor de edad");
        else
                System.out.println("Eres mayor de edad");

        leerTeclado.close();
   }
}

Como ves, en realidad es muy similar, pero se añaden un montón de palabras reservadas y reglas de tipado y de puntuación propias del lenguaje, en este caso Java, que pueden hacer que el aprendiz tenga que invertir más esfuerzo en aprender el lenguaje en lugar de aprender a programar, que es lo primordial.


Por eso es recomendable empezar con pseudocódigo, aunque no sea un lenguaje real, sino un mero ejercicio.

Aunque eso no quita que no se pueda hacer simultáneamente. Una vez en pseudocódigo se ha aprendido a utilizar un nuevo concepto, por ejemplo usar bucles, pues luego se puede mirar de aprender como aplicarlo en un lenguaje "real".

Sobre por cuál lenguaje "real" empezar. En principio sirve cualquiera.
Yo suelo recomendar Java, quizás en parte por cariño al lenguaje  ;D, pero también pienso que tiene características que hacen que sea cómodo aprender con él.
Tiene una serie de librerías oficiales predefinidas, así que todo el mundo usa las mismas instrucciones.
Esto en otros lenguajes no siempre es así, como por ejemplo C/C++ cuyas instrucciones básicas sí son comunes pero luego otras más avanzadas depende de las librerías que tenga cada compilador.

Además en Java hay toneladas de documentación en la red, tanto artículos escritos como vídeos YouTube, y siempre encuentras a alguien que lo conozca y te pueda ayudar con dudas.

Y hablamos de un lenguaje que sigue plenamente vigente y que será la base para que más adelante aprender a programar para Android.

779
Hola, hay varios errores.

Al bucle for le has puesto un punto y coma ; justo tras la declaración.
Esto hace que el bucle for quede cerrado, lo que has puesto después entre llaves, ha quedado fuera del for. De hecho, el bucle for está vacío.

Además estás declarando dos arreglos, uno con números y otro vacío. Solo necesitas un arreglo.

En el IF donde haces la comparación, estás comparando los dos arreglos.
Tienes que comparar que el usuario ha pedido buscar, con los elementos que hay dentro del arreglo.
Para acceder a cada elemento del arreglo usas los corchetes y dentro pones el valor del indice del elemento que quieres consultas.
En este caso, como queremos consultarlos todos, usamos el valor de la variable i que el bucle for incrementa en cada repetición.

Y es mejor poner nombres más descriptivos para identificar a simple vista que es cada elemento del programa, luego evitamos confundir elementos.


Prueba con los cambios siguientes, aunque este código presenta un problema que comento después.

Código: [Seleccionar]
package práctica1;

import java.util.Scanner;

public class Práctica5 {

    public static void main(String[] args) {
        Scanner entrada = new Scanner(System.in);
        int numBuscar= 0;
        int[] arregloNumeros= {1,2,3,4};
        System.out.println("bienvenida X");
        System.out.println("Digite el numero que desea buscar");
        numBuscar = entrada.nextInt();
        for (int i = 0; i < arregloNumeros.length; i++)
        {
            if (arregloNumeros[i] == numBuscar) {
                System.out.println("El número se encuentra en el registro"
                        + "y esta en la posición " + i);
            } else{
                System.out.println("El número no se encuentra en el registro");
            }
        }
entrada.close();
    }

El programa ya funciona, pero verás que por cada número del arreglo, va a salir un mensaje en pantalla.
Esto es porque el mensaje lo hemos puesto dentro del bucle, así que por cada repetición del bucle, se mostrará un mensaje.

Esto podemos solucionarlo usando un valor boolean que solo adopte valor true si el número ha sido encontrado. Luego, cuando el bucle haya terminado, consultamos que valor tiene este boolean y ya decidimos que mensaje hay que mostrar.

Si queremos además seguir informando de la posición donde se ha encontrado el número, entonces tendremos que declarar la variable i antes del bucle for. Ya que al estar declarada dentro del mismo bucle for, esta variable i deja de existir cuando el bucle ha terminado sus tareas.

Prueba ahora con estos cambios:

Código: [Seleccionar]
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
int numBuscar= 0;
int[] arregloNumeros= {1,2,3,4};
System.out.println("bienvenida X");
System.out.println("Digite el numero que desea buscar");
numBuscar = entrada.nextInt();

boolean encontrado = false;
int i;
for (i = 0; i < arregloNumeros.length; i++)
{
if (arregloNumeros[i] == numBuscar)
encontrado = true; //Sí se ha encontrado el número
}

if (encontrado == true) {
System.out.println("El número se encuentra en el registro"
+ " y esta en la posición " + i);
} else{
System.out.println("El número no se encuentra en el registro");
}

entrada.close();
}


Por cierto, evita usar tildes, como los que has puesto en las palabras "práctica". Evita de hecho cualquier símbolo o carácter que no pertenezca al alfabeto ingles, como las ñ por ejemplo

780
Buenas noches @EsoJ, estuve utilizando el programa echo por ti.
Cuando registras un alumno,  La hora que pones el nombre, añadiendo espacios salta las lecturas del teclado. Eso porque seria?

Porque está usando el método next() para leer los datos, método que solo acepta una palabra.

Para leer más de una palabra hay que usar el método nextLine().

Aún así, esto supondrá otros problemas, porque si previamente se ha leido algún dato numérico con nextInt(), nextDouble() o similar....el próximo nextLine() no funcionará y el programa se lo saltará.

Mi consejo para evitar estos problemas es leer los datos por teclado siempre con el método nextLine().

Ejemplo:
Código: [Seleccionar]
System.out.println("Introduce nombre y apellidos:")
String datos = entradaTeclado.nextLine();

Y si lo que necesitamos son datos numéricos, también usamos nextLine(), pero parseando el valor leído al tipo de dato que necesitemos.

Ejemplos:
Código: [Seleccionar]
System.out.println("Introduce edad:")
int edad = Integer.parseInt(entradaTeclado.nextLine());

Código: [Seleccionar]
System.out.println("Introduce temperatura:")
double tempe= Double.parseDouble(entradaTeclado.nextLine());


De este modo, se evitan problemas inherentes al funcionamiento interno de la clase Scanner.

Páginas: 1 ... 34 35 36 37 38 [39] 40 41 42 43 44 ... 50

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".