好吧,每个人都在免费参加EDX课程,而我又不能早些参加一些活动。在上课的过程中,我不得不首先学习。
程序创建一个“ zig zag”模式,其大小取决于int numTiles。我对此感到困惑,因为在我的脑海中运行该程序,我认为它将以不同的方式工作。我不知道为什么它根据numTiles在整行打印1。程序会不会就此停止?为什么我和J每次都不增加?空格是什么情况?我或J是否会遍历整数?除了第一次运行,J如何等于0?请帮我把这个包裹一下。
public class Main {
public static void main(String[] args) {
int numTiles = 8;
for(int i=0; i<numTiles;i++){
for(int j=0; j<numTiles;j++){
if(i%2==0){
System.out.print("1");
}else if ((i-1)%4==0 && j==numTiles-1){
System.out.print("1");
}else if((i+1)%4==0 && j==0){
System.out.print("1");
}else{
System.out.print(" ");
}
}
System.out.println();
}
}
}
答案 0 :(得分:0)
我认为您的误解可能归结为模糊的变量名和难以理解的代码风格。这是我将程序转换为更易于理解的形式的方法:
import { Redirect } from 'aurelia-router';
canActivate(params) {
let thing = this.thing = await this.service.getById(params.id);
if (!thing) {
return new Redirect('somewhere');
}
return true;
}
外部循环控制行的打印。在这种情况下,输出中将有8行。内部循环控制列(也为8)的打印。每行从左到右打印单元格。
现在,剩下的唯一问题是每个单元格,我们打印一个“ 1”还是空白?如果行是偶数,或者如果行是奇数并且当前列索引在一端或另一端,则条件语句显示“ 1”。否则,请打印一个空格。
我还添加了一个public class Main {
public static void main(String[] args) {
int rows = 8;
for (int row = 0; row < rows; row++) {
for (int col = 0; col < rows; col++) {
if (row % 2 == 0 ||
row % 4 == 3 && col == 0 ||
row % 4 == 1 && col == rows - 1) {
System.out.print("1");
}
else {
System.out.print(" ");
}
try { Thread.sleep(100); }
catch (Exception e) {}
}
System.out.println();
}
}
}
调用,该调用将延迟打印,使您可以逐单元观看程序运行。我希望这可以帮助您澄清问题。这是一个repl可以玩的游戏。