import static java.lang.System.*;
class _{
public static void main(String[] __A_V_)
{
String $="";
for(int x=0;++x<__A_V_.length;)
$ += __A_V_[x];
out.println($);
}
}
和命令行:
javac _.java
java _-A。
Plz解释O / p如何为“ A”。 (没有空间)
我期望“-A”。 (有空格)
答案 0 :(得分:3)
java _ - A .
正在将三个参数传递给main
类的_
方法:“-”,“ A”和“。”。空格是参数之间的分隔符。
由于++x<__A_V_.length
中的预递增运算符,您的循环跳过了第一个参数(“-”)。
因此,仅第二个和第三个参数-__A_V_[1]
(其值为“ A”)和__A_V_[2]
(其值为“。”)-附加到$
字符串和
如果将其更改为
java _ "- A ."
您将传递一个值为“-A”的单个参数。 (这次空格将成为单个参数的一部分)到main
。但是,现在,跳过第一个参数将意味着您的$
字符串将保持为空。
答案 1 :(得分:1)
从技术上讲,有两件事:
但是除此之外,还有一个独特的非答案:这里真正的答案是OP自己调试这类东西。认真地讲:准备考试时,关键技能是可以自己找到解释。
在这种情况下,解决方案将是要么快速转到调试器,要么简单地增强给定代码以使用某些println()
调用,例如打印出{{1 }}索引(以及传入参数数组的内容)。换句话说:可以通过观察在运行时代码做什么来轻松解决此任务,因此,OP应该使自己能够观察他的代码正在做什么。
关于第二个问题(来自注释),为什么循环在不使用incr / decr的情况下起作用...让我们引用官方教程:
for循环的三个表达式是可选的;可以如下创建无限循环:
x
识别Java语言规范中的相应部分留给用户练习。