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.


Temas - skatersezo

Páginas: [1]
1
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

2
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

3
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;
}

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