【问题标题】:If not working properly [duplicate]如果不能正常工作[重复]
【发布时间】:2015-10-01 19:29:34
【问题描述】:

我的“如果”只适用于一些错误。我需要改变什么,以便他们检测到每个错误并显示我的消息而不是 cmd 错误。当我在 cmd 中尝试程序时,只检测到像 f 这样的字母我想要每个除了我在里面写的那些字母。编辑:是的,这是一个重量转换器,我添加了你们告诉我的东西,但程序仍然只检测到一些错误

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");
            }


}

}

重要的部分

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

        }

【问题讨论】:

  • 我的读心技巧告诉我这应该是一个单位转换实用程序,但让 OP 解释他们认为程序应该做什么以及它实际在做什么总是有帮助的,而不仅仅是说“下面的代码不能正常工作,怎么了?”

标签: java if-statement cmd detect


【解决方案1】:

使用String.equals(string2Check) 比较您的字符串,所以在您的情况下,它看起来像...

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

【讨论】:

    【解决方案2】:

    您需要使用 .equals() 进行字符串比较。你的逻辑也出现了。我认为您想要 && 运算符而不是 ||在第一个到 if/else 块中。照原样,看起来那些总是会被执行。

    【讨论】:

      【解决方案3】:

      你应该使用equals()来比较Strings

      这部分:

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

      变成:

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

      此外,如果您的 unitésDeMesure 必须为“kg”或“lb”,则必须使用 && 运算符来测试您的状况。

      假设用户输入“lb”并且知道当您使用 || 并且第一个测试为真时,我们无论如何都会输入:

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

      程序假定用户输入无效,即使他输入了“lb”

      现在让我们用&& 试试,知道&&,如果第一个是true,我们必须继续

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

      我们没有进入if

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-28
        • 2014-11-13
        • 2017-11-30
        • 2019-12-25
        • 1970-01-01
        • 2017-12-05
        相关资源
        最近更新 更多