我是Java的新手,在做家庭作业时遇到了以下示例:
String result = " ";
for (int r = rows(); r >= 0; r++) {
result += ("___") + (r == 0 ? (" ") : ("_"));
}
for (int y = columns(); y >= 0; y++) {
for (int x = 0; x <= rows(); x++) {
result += ("|") + ((located && theLocation(y, x)) ? (youWin + "S"
+ " ") : (" " + (mysterySpot[y][x] == 'S' ? (" ") :
(mysterySpot[y][x])) + " "));
}
如果我理解正确,第一个for循环应等效于:
for (int r = rows(); r >= 0; r++) {
result += "___";
if (r == 0) {
result += " ";
}
else {
result += "_";
我阅读正确吗?对于第二部分,似乎另一个if-else语句中有一个if-else语句。这是我很困惑的部分,如果我将其编写为if-else语句,代码会是什么样?
答案 0 :(得分:1)
那么“?”和“:”这样读取。...
如果a小于b,则放x,否则放y。
此语句在此处的代码中显示。
if (a < b){
// Does a thing
x;
}else{
// Does a cooler thing
y;
}
或者,我们可以这样写...
a < b ? x : y
那么“?”之前的部分?在问这是否是真的。如果a确实大于b,则执行x,“:”是else语句或替代
[the question] ? [option1 if true] : [option2 if false]
答案 1 :(得分:1)
翻译成ifs和else,这看起来像以下内容。
for (int y = columns(); y >= 0; y++) {
for (int x = 0; x <= rows(); x++) {
if (located && theLocation(y,x)) {
result += "|" + youWin + "S ";
} else if (mysterySpot[y][x] == 'S') {
result += "| ";
} else {
result += "| " + mysterySpot[y][x] + " ";
}
}
}
请注意,几乎不要使用单字母变量名称,如果这样做,则应尝试使它们有意义。在这种特殊情况下,将y
用作列号并将x
用作行号是完全相反的。
永远不要像本书中的代码那样编写代码。我最好的建议是从另一本书中学习。