2015-10-01 197 views
-4

我的「if」只適用於某些錯誤。我需要更改哪些內容以便它們檢測到每個錯誤並顯示我的消息而不是cmd錯誤。當我在cmd中嘗試程序時,只有字母f是檢測我想除了那些我在it.EDIT寫道每信:是的,這是一個權重變換器,我加入u人告訴我的事情,但該程序仍只能檢測某些錯誤如果工作不正常

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

     } 
+1

我的閱讀技巧告訴我這應該是一個單位轉換實用程序,但它總是有助於讓OP解釋他們認爲該程序應該做什麼以及它實際在做什麼,而不僅僅是說「下面的代碼工作不正常,怎麼了?「 – shoover

回答

0

您應該使用equals()比較Strings

這一部分:

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

變爲:

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

此外,如果您unitésDeMesure必須是 「公斤」 或 「磅」,你會必須使用&&運營商來測試您的情況。

想象用戶輸入「磅」和知道,當你使用||和第一個測試是真實的,我們進入無論是什麼:

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

的編程'假設用戶有無效的條目即使他進入「LB」

讓我們嘗試將其與&&現在知道有&&,我們必須繼續,如果第一個是true

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

,我們不進入if

0

使用String.equals(string2Check)您的字符串所以在你的情況下,它看起來像...比較

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

0

您需要使用.equals ()進行字符串比較。你的邏輯也出現了。我想你想要& &而不是||在第一個到if/else塊中。因爲它看起來像那些將永遠被執行。