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