[英]Could someone look at my code and tell me what's wrong?
我正在嘗試使這個簡單的程序正常工作,但是我不確定自己在做什么錯。 我嘗試制作一個新文件,以查看問題是否出在我的語法上,但仍在發生。 這里是:
public class test {
public static void main(String[] args) {
String operator = args[0];
switch(operator) {
case "*":
System.out.println("Hello");
break;
}
}
}
我想先在終端上運行此程序
$ javac test.java
然后實際運行程序以及參數
$ java test *
然后我什么也沒得到,為什么? 將“ *”替換為“ +”似乎有效。
我還注意到,只有輸入后,它才能正常工作
$ java test "*" //notice the quotation marks
為什么沒有括號的星號即使是字符串但沒有括號的“ +”也不起作用? 我有什么想念的嗎?
問題與Java無關。 發生問題是因為外殼程序會將*
字符視為文件名模式,並將其擴展為當前目錄中所有文件的名稱。
解決方法是在命令行上轉義*
字符。 您無法使用Java來解決此問題。
可以使用三種方式進行轉義(對於POSIX兼容外殼)
java test "*"
java test '*'
java test \*
可能還有其他晦澀的方法可以執行此操作.....但上述內容就足夠了。
( "*"
和'*'
之間的區別在於它們轉義了不同的外殼結構。雙引號僅禁用文件路徑名的“ globbing”。單引號還禁用參數替換等功能。)
如果在命令行參數中使用這些字符, 可能需要轉義這些字符,包括:
*
, ?
, [
, ]
, ~
, {
, }
-用於遍歷等 $
-參數替換 |
, &
;
#
-注釋字符 您應該參考外殼上的教程或textboox,或者閱讀所用外殼的手冊條目。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.