学习“迷宫”模式所迷惑的Java

时间:2018-08-09 05:06:06

标签: java

好吧,每个人都在免费参加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();
        }
    }
}

1 个答案:

答案 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可以玩的游戏。