Java 有人能看看我的代码并告诉我什么';怎么了?
我试图让这个简单的程序工作,但我不确定我做错了什么;我试着创建一个新文件,看看问题是否出在我的语法上,但它仍然在发生。这是:Java 有人能看看我的代码并告诉我什么';怎么了?,java,string,switch-statement,Java,String,Switch Statement,我试图让这个简单的程序工作,但我不确定我做错了什么;我试着创建一个新文件,看看问题是否出在我的语法上,但它仍然在发生。这是: public class test { public static void main(String[] args) { String operator = args[0]; switch(operator) { case "*": System.out.println("Hello"); break;
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无关。出现此问题是因为shell将
*
字符视为文件名模式,并将其扩展到当前目录中所有文件的名称
解决方案是在命令行中转义*
字符。在Java中,您无法解决这个问题
有三种方法可以用作转义(对于兼容POSIX的shell) 可能还有其他一些模糊的方法可以做到这一点。。。。但上述内容应该足够了 (
“*”
和“*”
之间的区别在于它们转义了不同的shell构造。双引号仅禁用文件路径名的“globbing”。单引号还禁用参数替换和其他功能。)
如果在命令行参数中使用,可能需要转义的字符包括:
,*
,?
,[
,]
,~
,{
-用于全局搜索等}
-参数替换$
- 外壳符号代码>
-注释字符#
- 反引号字符
您应该参考shell上的教程或textboox,或者阅读正在使用的shell的手册条目。问题与Java无关。出现此问题是因为shell将
*
字符视为文件名模式,并将其扩展到当前目录中所有文件的名称
解决方案是在命令行中转义*
字符。在Java中,您无法解决这个问题
有三种方法可以用作转义(对于兼容POSIX的shell) 可能还有其他一些模糊的方法可以做到这一点。。。。但上述内容应该足够了 (
“*”
和“*”
之间的区别在于它们转义了不同的shell构造。双引号仅禁用文件路径名的“globbing”。单引号还禁用参数替换和其他功能。)
如果在命令行参数中使用,可能需要转义的字符包括:
,*
,?
,[
,]
,~
,{
-用于全局搜索等}
-参数替换$
- 外壳符号代码>
-注释字符#
- 反引号字符
您应该参考shell上的教程或textboox,或者阅读正在使用的shell的手动条目。。括号中的引号是指引号吗?在切换之前打印
操作符的值可以帮助您了解发生了什么。(埃利奥特的评论)@River是的,我指的是星号,哎呀。@asterisks<代码>*
。括号是指引号吗?在切换之前打印运算符的值可以帮助您了解发生了什么。(埃利奥特的评论)@River是的,我指的是星号,哎呀。@asterisks<代码>*
你说的逃逸是什么意思?如中所示,选择另一个符号来代替星号?转义*是什么意思?如中所示,选择另一个符号替换星号?
java test "*"
java test '*'
java test \*