-4

my "if" only works with some errors.What do i have to change so they detect every error and display my message and not the cmd error.When i try the program in cmd only letter like f are detected i want every letters except the ones i wrote in it.EDIT:yes this is a weight converter and i added the things u guys told me to but the program still detect only some errors

public class Convertisseur1 {
public static void main(String[] args) {
String valeurInitial;
String valeurPoid;
String valeurDesire;
String valeurInitial2;
String valeurInitial3;

//seperation des string 

valeurInitial = (args[0]); //pour le nombre
valeurInitial2 = (args[0]); // pour la valeur initiale du poid(kg.g.t.lb)
valeurDesire = (args[1]); //pour la valeur desiré

//seperation du nombre de sa valeur
valeurInitial = valeurInitial.replace("kg",""); 
valeurInitial = valeurInitial.replace("g","");      
valeurInitial = valeurInitial.replace("t","");      
valeurInitial = valeurInitial.replace("lb","");     
double valeurDouble = Double.parseDouble(valeurInitial);
valeurInitial2 = valeurInitial2.replaceAll("[^a-z]","");
//System.out.println(valeurInitial2);
//System.out.println(valeurDesire);

if(!valeurDesire.equals("kg")&&!valeurDesire.equals("g")&&!valeurDesire.equals("t")&&!valeurDesire.equals("lb")){
    System.out.println("L'unite de mesure " + valeurDesire + " n'est pas valide.");
}else
    if(!valeurInitial2.equals("kg")&&!valeurInitial2.equals("lb")&&!valeurInitial2.equals("t")&&!valeurInitial2.equals("g")){
        System.out.println("L'unite de mesure " + valeurInitial2 + " n'est pas valide.");

        }
         if(valeurInitial2.equals("kg") &&valeurDesire.equals("g")){
                valeurDouble = (valeurDouble*1000); 
                System.out.println("La conversion finale : " + valeurDouble + "g");
            }else if(valeurInitial2.equals ("kg")&&valeurDesire.equals ("lb")){
                valeurDouble = (valeurDouble*2.2046226);
                System.out.println("La conversion finale : " + valeurDouble + "lb");
            }else if(valeurInitial2.equals("kg")&&valeurDesire.equals("t")){
                valeurDouble = (valeurDouble*0.001);
                System.out.println("La conversion finale : " + valeurDouble + "t");
            }else if(valeurInitial2.equals("lb")&&valeurDesire.equals("kg")){
                valeurDouble = (valeurDouble/2.2046226);
                System.out.println("La conversion finale : " + valeurDouble + "kg");
            }else if(valeurInitial2.equals("lb")&&valeurDesire.equals("g")){
                valeurDouble = (valeurDouble/0.00220462);
                System.out.println("La conversion finale : " + valeurDouble + "g");
            }else if(valeurInitial2.equals("lb")&&valeurDesire.equals("t")){
                valeurDouble = (valeurDouble*0.000453592);
                System.out.println("La conversion finale : " + valeurDouble + "t");
            }else if(valeurInitial2.equals("g")&&valeurDesire.equals("t")){
                valeurDouble = (valeurDouble/1000000);
                System.out.println("La conversion finale : " + valeurDouble + "t");
            }else if(valeurInitial2.equals("g")&&valeurDesire.equals("lb")){
                valeurDouble = (valeurDouble*0.00220462);
                System.out.println("La conversion finale : " + valeurDouble + "lb");
            }else if(valeurInitial2.equals("g")&&valeurDesire.equals("kg")){
                valeurDouble = (valeurDouble/1000);
                System.out.println("La conversion finale : " + valeurDouble + "kg");
            }else if(valeurInitial2.equals("t")&&valeurDesire.equals("kg")){
                valeurDouble = (valeurDouble/0.001);
                System.out.println("La conversion finale : " + valeurDouble + "kg");
            }else if(valeurInitial2.equals("t")&&valeurDesire.equals("lb")){
                valeurDouble = (valeurDouble/0.000453592);
                System.out.println("La conversion finale : " + valeurDouble + "lb");
            }else if(valeurInitial2.equals("t")&&valeurDesire.equals("g")){
                valeurDouble = (valeurDouble*1000000);
                System.out.println("La conversion finale : " + valeurDouble + "g");
            }


}

}

the important part

if(!valeurInitial2.equals("kg")&&!valeurInitial2.equals("lb")&&!valeurInitial2.equals("t")&&!valeurInitial2.equals("g")){
        System.out.println("L'unite de mesure " + valeurInitial2 + " n'est pas valide.");

        }
Brian mon
  • 1
  • 1
  • 3
  • 1
    My mindreading skills tell me this is supposed to be a unit conversion utility, but it always helps to have the OP explain what they think the program is supposed to do and what it's actually doing, rather than just saying "the code below doesn't work properly, what's wrong?" – shoover Oct 01 '15 at 19:41

3 Answers3

0

You should use equals() to compare Strings

This part :

if(valeurInitial2!="kg"||valeurInitial2!="lb")

Becomes :

if(!valeurInitial2.equals("kg") || !valeurInitial2.equals("lb"))

Also if your unitésDeMesure have to be "kg" or "lb", you'll have to use the && operator to test your condition.

Imagine user entering "lb" and knowing that when you're using || and the first test is true, we enter no matter what :

is "lb" not == to "kg" : true

The progam assume the user has an invalid entry even if he entered "lb"

Let's try it with && now and knowing that with &&, we have to continue if the first is true

is "lb" not == to "kg" : true
is "lb" not == to "lb" : false

and we don't enter the if segment

Yassin Hajaj
  • 21,337
  • 9
  • 51
  • 89
0

Compare your Strings using String.equals(string2Check) so in your case it would look like...

if (!valeurInitial2.equals("kg")){}

gonzo
  • 2,103
  • 1
  • 15
  • 27
0

You need to use .equals() for string comparison. Also your logic appears off. I think you want && operators instead of || in the first to if/else blocks. As is, it looks like those will always be getting executed.

Akron
  • 1,413
  • 2
  • 13
  • 28