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 - skatersezo

Páginas: [1]
1
Muchas gracias LoboBlanco, estoy deseando llegar a casa y probarlo, no conocía el método strpos. Con los apellidos compuestos me romperé la cabeza otro día, solo quería practicar las operaciones con cadenas.

2
Hola, tengo un problema que no lo logro resolver utilizando las funciones substring de PHP para extraer de una cadena entera de apellidos, los apellidos individuales por separado, voy a copiar el código:

Este es el HTML

Código: [Seleccionar]
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Prueba formulario PHP</title>
</head>

<body>

<h1>En éste formulario todos los campos son requeridos</h1>

<form action="formulario.php" method="post">

    <fieldset> <!--etiqueta para agrupar elementos de un formulario-->

<p> <!-- definir un parrafo-->
<label for="nombre">Nombre: </label>
<input type="text" name="nombre" id="nombre">
<br/> <br/>
<label for="apellidos">Apellidos: </label>
<input type="text" name="apellidos" id="apellidos">
<br/> <br/>
<label for="birthdate">Fecha de nacimiento: </label>
<input type="date" name="birthdate">
<br/> <br/>
<label for="email">Email: </label>
<input type="text" name="email" id="email">
<br/> <br/>
<input type="radio" name="sexo" id="varon" value="Varón">
<label for="varon">Varón: </label>
<br/> <br/>
<input type="radio" name="sexo" id="mujer" value="Mujer">
<label for="mujer">Mujer: </label>
<br/> <br/>
<input type="submit" value="Enviar">
<input type="reset">
</p>

</fieldset>

</form>

</body>
</html>


Y este es el PHP:

Código: [Seleccionar]
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Documento sin título</title>
</head>

<body>

<?php

$nombre $_REQUEST['nombre']; 

$apellidos $_REQUEST['apellidos']; 

$birthdate $_REQUEST['birthdate'];

$email $_REQUEST['email'];

$sexo $_REQUEST['sexo'];

$apellido1="";
$apellido2="";

function 
ExtraeApellido1 ($apellidos) { //funcion para extraer el primer apellido

for ($i 0$i $apellidos$i++) {
if ($apellidos[i]==" "){ //si tiene más de un 1 apellido voy a buscar el espacio
$apellido1 substr($apellidos0$i); //extraigo con substring desde la posicion 0 del string apellidos hasta el espacio el primer apellido
}
}
return $apellido1;
}

function 
ExtraeApellido2 ($apellidos) { //funcion para extraer el segundo apellido

for ($i 0$i $apellidos$i++) {
if ($apellidos[i]==" "){ //si tiene más de un 1 apellido voy a buscar el espacio
$apellido2 substr($apellidos, ($i+1)); //extraigo con substring desde la posicion del espacio +1 hasta el final el segundo apellido
}
}
return $apellido2;
}

function 
CalculaEdad$fecha ) { //funcion para calcular edad a partir de una fecha date tipo yyyy-mm-dd
    
list($Y,$m,$d) = explode("-",$fecha);
    return( 
date("md") < $m.$d date("Y")-$Y-date("Y")-$Y );
}

$apellido1 ExtraeApellido1($apellidos);
$apellido2 ExtraeApellido2($apellidos);
$edad CalculaEdad($birthdate);

echo 
"Tu nombre es " $nombre " y tu primer apellido es " $apellido1 " y tu segundo apellido " $apellido2 " y tienes " $edad " años."

?>



</body>
</html>

El error me da al retornar el valor de las variables $apellido1 y $apellido2, parece ser que no retorna nada

3
Mil gracias pedro! Sé que nextLine introduce un salto de linea además de recoger un string, pero no entiendo bien la diferencia entre next y nextLine y cuando es más apropiado usar uno u otro...

4
Estoy haciendo pruebas con una aplicación y parece ser que me da error al comparar cadenas string que incluyen espacios. Se trata de una aplicación que opera con los atributos de dos objetos.


Código principal:

Código: [Seleccionar]
package contadorcalorias;

import java.util.Scanner;

public class Pruebas {

static double peso_usuario;
static Scanner entradaTeclado = new Scanner(System.in);
static Alimento[] misAlimentos = new Alimento[9];
static Usuario user1 = new Usuario("pedro", 2700.0, 130.0, 90.0, 200.0);

public static void main(String[] args) {
// TODO Auto-generated method stub


restaAlimentosDeObjetivo();


System.out.println(user1.toString());


}

private static void restaAlimentosDeObjetivo() {

iniciaAlimentos(misAlimentos);
boolean alimentoCorrecto=false;
String alimentoIntroducido;
Alimento alimentoEscogido = null;
double gramos;



System.out.print("\nEscribe el nombre del alimento que deseas introducir: ");
alimentoIntroducido = entradaTeclado.next();

for (int i=0; i<misAlimentos.length; i++){ //bucle para comprobar si el alimento que busca el usuario existe

if (alimentoIntroducido.equalsIgnoreCase(misAlimentos[i].getNombre())){
alimentoEscogido = misAlimentos[i];
alimentoCorrecto=true;
}
}
if (alimentoCorrecto ==false){
System.out.println("No se encuentra el alimento introducido, consulta la lista de nuevo.");
} else {
if (alimentoEscogido.getNombre().equalsIgnoreCase(misAlimentos[7].getNombre())){
System.out.println("\n¿Cuantos gramos (cada huevo entero talla M pesa 60gr)?");
gramos = entradaTeclado.nextDouble();

user1.setGETobjetivo(RedondearDosDecimales(user1.getGETobjetivo() - ((gramos*alimentoEscogido.getCAL()/100))));
user1.setPROTobjetivo(RedondearDosDecimales(user1.getPROTobjetivo() - ((gramos*alimentoEscogido.getPROT()/100))));
user1.setGRASobjetivo(RedondearDosDecimales(user1.getGRASobjetivo() - ((gramos*alimentoEscogido.getGRAS()/100))));
user1.setCHobjetivo(RedondearDosDecimales(user1.getCHobjetivo() - ((gramos*alimentoEscogido.getCH()/100))));
} else {

System.out.println("\n¿Cuantos gramos?");
gramos = entradaTeclado.nextDouble();

user1.setGETobjetivo(user1.getGETobjetivo() - ((gramos*alimentoEscogido.getCAL()/100)));
user1.setPROTobjetivo(user1.getPROTobjetivo() - ((gramos*alimentoEscogido.getPROT()/100)));
user1.setGRASobjetivo(user1.getGRASobjetivo() - ((gramos*alimentoEscogido.getGRAS()/100)));
user1.setCHobjetivo(user1.getCHobjetivo() - ((gramos*alimentoEscogido.getCH()/100)));
}
}

}

/*Método para iniciar mi array de alimentos*/

public static void iniciaAlimentos(Alimento[] misAlimentos){

misAlimentos[0] = new Alimento("VERDURA", 30.0, 3.0, 0.4, 5.1);
misAlimentos[1] = new Alimento("FRUTA", 60.0, 0.3, 0.2, 13.8);
misAlimentos[2] = new Alimento("CARNE ROJA", 150.0, 24.0, 3.9, 0.0);
misAlimentos[3] = new Alimento("CARNE BLANCA", 160.0, 30.7, 3.5, 0.0);
misAlimentos[4] = new Alimento("LEGUMBRES", 378.0, 20.0, 6.0, 63.0);
misAlimentos[5] = new Alimento("CEREALES", 360.0, 6.0, 0, 86);
misAlimentos[6] = new Alimento("FRUTOS SECOS", 578, 21.3, 50.6, 19.7);
misAlimentos[7] = new Alimento("HUEVOS", 60, 6.3, 5.3, 0.6);
misAlimentos[8] = new Alimento("LECHE ENTERA", 63, 3, 3.6, 4.6);

}

/*Método para redondear decimales*/

public static double RedondearDosDecimales(double numero)
{
       return Math.rint(numero*100)/100;
}


}


Clase usuario

Código: [Seleccionar]
package contadorcalorias;

public class Usuario {

private String nombre;
private double GETobjetivo;
private double PROTobjetivo;
private double GRASobjetivo;
private double CHobjetivo;

public Usuario() {

}

public Usuario(String nombre, double GETobjetivo, double PROTobjetivo, double GRASobjetivo, double CHobjetivo){

this.nombre = nombre;
this.GETobjetivo = GETobjetivo;
this.PROTobjetivo = PROTobjetivo;
this.GRASobjetivo = GRASobjetivo;
this.CHobjetivo = CHobjetivo;

}


public String getNombre() {
return nombre;
}

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

public double getGETobjetivo() {
return GETobjetivo;
}

public void setGETobjetivo (double GETobjetivo) {
this.GETobjetivo = GETobjetivo;
}

public double getPROTobjetivo() {
return PROTobjetivo;
}

public void setPROTobjetivo(double PROTobjetivo) {
this.PROTobjetivo = PROTobjetivo;
}

public double getGRASobjetivo() {
return GRASobjetivo;
}

public void setGRASobjetivo(double GRASobjetivo) {
this.GRASobjetivo = GRASobjetivo;
}

public double getCHobjetivo() {
return CHobjetivo;
}

public void setCHobjetivo(double CHobjetivo) {
this.CHobjetivo = CHobjetivo;
}


public String toString(){

return "\n" + getNombre() + " este es tu progreso diário: \n" + getGETobjetivo() + " calorías restantes. \n" + getPROTobjetivo() + " gr de proteína restantes."
+ "\n" + getGRASobjetivo() + " gr de grasa restantes. \n" + getCHobjetivo() + " gr de carbohidratos restantes.";
}




}



Clase Alimento

Código: [Seleccionar]
package contadorcalorias;

public class Alimento {

private String nombre;
private double CAL;
private double PROT;
private double GRAS;
private double CH;

//CONSTRUCTOR PARA EL OBJETO ALIMENTO

public Alimento (String nombre, double calorias, double proteina, double grasas, double ch){
this.nombre=nombre;
this.CAL=calorias;
this.PROT=proteina;
this.GRAS=grasas;
this.CH=ch;
}

//Utilizamos solo metodos getters ya que no interesa modificar los parametros en principio

public String getNombre() {
return nombre;
}

public double getCAL() {
return CAL;
}

public double getPROT() {
return PROT;
}

public double getGRAS() {
return GRAS;
}

public double getCH() {
return CH;
}

public String toString(){
return "\n" + getNombre() + ", por 100gr:" + "\n-Calorias: " + getCAL() + " cal" + "\n-Proteina: " + getPROT() + " gr" +
"\n-Grasas:" + getGRAS() + " gr" + "\n-Carbohidratos: " + getCH() + " gr ";
}

}

Si veis el fallo explicarme el por qué por favor

5
Yo lo probe y funcionaba.Lo volvere a mirar y te digo
Ya he encontrado el problema, tu código funcionaba bien, pero yo lo fui a escribir a mano y transcribí mal una cosa, te la enseño:
Código: [Seleccionar]
/*Método para comprobar el peso*/

private static  int compruebaPeso() {
       
        boolean pesoCorrecto = false;
        int introPeso;
        int correctoPeso = 0;
        do{

            System.out.print("Introduce tu peso en kg (sin decimales): ");
            try{
                introPeso = entradaTeclado.nextInt();
            }
            catch (java.util.InputMismatchException e) //error con otros caracteres
            {             
                introPeso = 0;
              Scanner  entradaTeclado = new Scanner(System.in);  //Aquí introduje la palabra Scanner antes de entradaTeclado         
            }

            if(introPeso > 40 && introPeso <= 250 ){
                pesoCorrecto=true;
                correctoPeso=introPeso;
            }else{
                System.out.println("¡Peso incorrecto!");               
            }
        }while(pesoCorrecto==false);   
        return correctoPeso;
    }

6
Si.Seria lo mismo.Cambiaria la excepcion.
He probado el código y me entra en un bucle infinito si introduzco un valor alfanumérico.

7
Muchas gracias ESOJ, entiendo por lo que has hecho que si capturas una excepción esperada puedes ejecutar un código que solucione el error esperado. Supongo que esto podría hacerlo si se da el caso de una división entre 0 o cuando un objeto se encuentra como null (no se si esto lo estoy expresando bien porque tengo otro error en este mismo programa que me da un error así y aún estoy intentando solucionar por mi cuenta). Lo que no entiendo es porque vuelves a instanciar el objeto entradaTeclado Scanner dentro del catch...

8
Aquí otra estructura que he creado para comprobar el género.

Código: [Seleccionar]
/*Método para que el usuario introduzca el género*/

public static String compruebaGenero(){

boolean generoCorrecto = false;
String intro_genero;
String correctGene = null;
do {
System.out.print("Introduce tu género (H/M):");
intro_genero=entradaTeclado.next().toUpperCase();
switch (intro_genero){
case ("H"):
correctGene=intro_genero;
generoCorrecto=true;
break;
case ("M"):
correctGene=intro_genero;
generoCorrecto=true;
break;
default:
generoCorrecto=false;
System.out.println("¡Género Incorrecto!");
break;
}


} while (generoCorrecto==false);

return correctGene;
}

9
Hola! Soy un programador novato que se está iniciando, estoy escribiendo un programa para para calcular la tasa metabólica basal del usuario y pretendo crear una estructura de control de errores para evitar que el usuario introduzca datos indeseados y que no salga del bucle hasta que introduzca un valor correcto, y no se si lo estoy haciendo de la forma más eficiente. Voy a copiar el método que tengo creado para que el usuario introduzca el peso (por poner un ejemplo), y a comentar que aún no sé como hacer en el casó de que el usuario introduzca una variable alfanumérica, sé que podría convertir un String a un valor Int sí utilizo el método parseint de la clase integer, pero aún así, si el usuario introduce caracteres alfanuméricos me da error... bueno, yo lo he echo así, a ver que opináis.

Código: [Seleccionar]
/*Método para comprobar el peso*/

private static int compruebaPeso() {
boolean pesoCorrecto = false;
int introPeso;
int correctoPeso = 0;
do {
System.out.print("Introduce tu peso en kg: ");
introPeso=entradaTeclado.nextInt();
if (introPeso <= 40 || introPeso > 250 ){
System.out.println("¡Introduce un peso correcto!");
                                pesoCorrecto=false;
} else {
correctoPeso=introPeso;
pesoCorrecto = true;
}

} while (pesoCorrecto==false);

return correctoPeso;
}

10
Lo primero mil gracias ESOJ, has solucionado mi problema, y además he aprendido cosas nuevas porque lo escribes super limpio y ordenado. Pero te quería preguntas por esta parte:

Código: [Seleccionar]
public void verCuentas(){
        Cliente temp = null;
        Iterator<Cliente> it = misCuentas.iterator();
        while(it.hasNext())
        {
            temp = it.next();
            System.out.println(temp);           
        }       
    }

No entiendo bien que significa la palabra "temp" y porqué la usas, ni lo que hay dentro del bucle while...

Yo para mostrar las cuentas por pantalla, hasta donde sé (llevo apenas un mes programando), habría usado un bucle for recorriendo todo el array.

Tampoco entiendo esta parte del código de la clase cliente:

Código: [Seleccionar]
@Override 
    public String toString() {
        return "\nCliente "+numeroDeCliente+"\n"+ "Nombre: "+nombre+"\n"+"IBAN :"+iban+numeroDeCuenta+"\n"+"Saldo: "+saldo ;
    }

11
Código: [Seleccionar]
public class Cuenta {
/**     DECLARACION VARIABLES DE CLASE **/
private double saldo;
private final String nombre;
private StringBuilder numero_cuenta = new StringBuilder("ES21 0069 0666 01 ");
private static int num_sig=0;

/**   CONSTRUCTORES  **/
public Cuenta (String nombre){
this.nombre=nombre;
saldo=0;
numero_cuenta.append(num_sig);
num_sig++;
}

public Cuenta (String nombre, double saldo){
this.nombre=nombre;
this.saldo=saldo;
numero_cuenta.append(num_sig);
num_sig++;
}

Así lo tengo yo, pero quiero que se respete el número de 0, de manera que para el primer objeto, la secuencia sea de 10 0, "0000000000", para el segundo "0000000001", etc...

12
Deberias trabajar con una BD en la cual registres los numero generados, asi cuando instancies un objeto este consulte la BD y extraiga de alli la numeracion actual y de esa forma le sume uno.

Estoy haciendo un grado superior de DAM y aún no hemos visto eso, esto es parte de un ejercicio propuesto para hacer en casa y lo tenemos que hacer sin base de datos por el momento.

13
Hola, estoy comenzando a programar, y estoy creando una aplicación que gestiona un banco. He creado una clase Cuenta y quiero que para cada objeto que instancie de esa clase, se le asigne un numero de cuenta bancario que tenga esta forma
 "ES00 0000 0000 00 0000000000"

Y que para cada objeto que yo instancie de esa clase, el último valor de esa cadena de caracteres se incremente en 1.

Creo que utilizando metodos de la clase Integer y StringBuilder podria, pero no se como hacer para que en el contador de los últimos 10 digitos que son con los que quiero operar se me respeten los 0 a la izquierda. No sé si me he explicado bien, espero que sí

Páginas: [1]

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