2016-10-03 50 views
2

因此,我有一個更新程序,我在釋放它之前犯了一個錯誤。我完全忘記了繞過更新,以便用戶稍後可以更新它。嘗試將參數傳遞給java應用程序

現在我試圖解決它,我認爲用「-no_patching」創建參數是最好的解決方案。

下面的代碼:

public static void main(String... args) throws Exception { 
    if (args.length == 0) { 
     checkVersion(); 
     System.err.println("patching ON"); 
    } else if(args.toString().matches("-no_patching")) { 
     System.err.println("patching OFF"); 
     launchApp(); 
    } 
} 

的事情是,當我運行參數運行1秒鐘,則停止該程序。我做錯了什麼?

回答

1

參數表是數組。你應該做的是這樣的:

for(String arg : args) 
{ 
    if(arg.matches("-no_patching")){ 
     System.err.println("patching OFF"); 
     launchApp(); 
    } 
} 
+0

尼斯一個,我覺得這其中有一個獎金的未來,如果我需要添加更多的ARGS,謝謝! – Cravenica

1

這是args.toString().matches("-no_patching")處的錯誤。

這應該是

else if(args[0].equals("-no_patching")){ // make sure args length is 1 
      System.err.println("patching OFF"); 
      launchApp(); 
     } 

args陣列toString()不會給你的內容。

1

您正在嘗試匹配args數組,而不是匹配該數組中的第一個參數。

//this is not what you want 
args.toString().matches("-no_patching") 

你需要從陣列獲得第一個元素,然後做比較:

args[0].equals("-no_patching") 
0

試試這個,轉換參數傳遞給一個列表,然後使用含有方法,看看是否有任何參數匹配:

public static void main(String... args) throws Exception { 
    if(args.length == 0){ 
    checkVersion(); 
    System.err.println("patching ON"); 
    } else if(Arrays.asList(args).contains("-no_patching")){ 
     System.err.println("patching OFF"); 
     launchApp(); 
    } 
} 
0

我完全忘了陣列的事。 ..我想我恐慌了一下xD

else if(args[0].equals("-no_patching")){ 
    //do something 
} 

做的竅門,謝謝!

+0

接受一個答案,如果它的工作......這個問題顯示沒有答案。 –

0

我認爲你正試圖在ELSE不正確的比較IF

  else if(args.toString().matches("-no_patching")) 

args.toString()會給參數數組args來一些地址值。如果將這與「-no_patching」參數進行比較,則肯定會返回FALSE。

而你總是可以比較喜歡

  else if(args[0].toString().matches("-no_patching")) 
相關問題