分享一个宝藏级 Java 插件

最近在学习伯克利 CS 61b 公开课时候,发现了一个 Java 插件 Java Visualizer,主要用于观察程序执行时的变量和方法的变化情况,可以在Debug 模式下一步一步的观察到程序变化的可视化状态图,配合代码调试。

什么是 Java Visualizer

是一个Java 的可视化工具,它有一个浏览器内的交互式开发环境,可以直接浏览器上执行代码,并观察代码每一步的变化。

这是它的网站地址:

https://cscircles.cemc.uwaterloo.ca//java_visualize/#

同时它也提供了一个 IDEA 插件,可以直接从 Marketplace 里面搜索这个插件 安装即可,下面着重介绍在 IDEA 里面的使用

使用 Java Visualizer 来探索代码

我们平时在进行 debug 的时候 可能存在一些“只缘身在此山中”的感觉,一步一步的代码走下去,有的时候并不是很好的定位问题,尤其是一些复杂情况下更是如此。有的人属于视觉型选手,看着代码一步一步走 可能真的找不到问题所在,要是把这部分代码的结构和脉络呈现出来 可能一眼就找到问题了。话不多说,下面几个例子来认识一下 Java Visualizer

示例1:数组赋值

定义一个数组,然后通过 for 循环给每一个元素赋值

public class ArrayExample {    public static void main(String[] args) {        int [] input = new int[5];        for(int i = 0; i < 5; i++){            input[i] = i + 1;        }    }}

然后我们可以通过 debug 模式下来观察这个数组的情况,断点设置第三行处定义数组 Java Visualizer 呈现的页面如下图所示:

在执行 for 循环时,可以清晰地看到数组中元素的每个值的赋值的变化,在 Java Visualizer 呈现如下图所示:

 

示例2:计算二维 int 数组的行和

这是CS 61B 课程里的一个二维 int 数组计算每个行元素和的方法,写了一个测试方法来测试,用这个来展现一下二维数组以及调用方法在Java Visualizer 中的呈现,代码如下:

​​​​​​​

@Testpublic void testAllRowSums() {  int[][] input = { {1, 3, 4}, {1}, {5, 6, 7, 8}, {7, 9} };  int[] actual = allRowSums(input);  int[] expected = { 8, 1, 26, 16 };  for (int i=0;i<actual.length;i++) {    assertEquals(expected[i], actual[i]);  }}
public static int[] allRowSums(int[][] arr) {   int[] sum = new int[arr.length];   for (int i=0;i<arr.length;i++) {        for (int j=0;j<arr[i].length;j++) {             sum[i] += arr[i][j];        }    }    return sum;}

同样是通过 debug 模式进入,首先是定义二维数组,断点设置在第三行

然后依次往下进行,下面是调用计算和方法,返回一个int 类型数组存储每一行的和

测试方法完整过程如下所示,可以清晰看到每个变量所对应的值

 

以上两个示例带你认识 Java Visualizer ,它为我们 Java 开发人员提供了很大的便利,当然这也是因人而异的,有的人特别需要结合这种图示的方式来学习、工作或者解决问题,有的人不需要这些。大家按需所取吧,今天的分享就到这里。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,我可以为您提供一个基于Java的简单的文本冒险游戏。在这个游戏中,玩家将扮演一名冒险家,在一个神秘的地下迷宫中寻找宝藏。 以下是游戏的概述: 1. 游戏开始时,玩家将看到一个欢迎消息,并被要求输入他们的名字。 ``` 欢迎来到地下迷宫游戏!请告诉我你的名字:(输入你的名字) ``` 2. 然后,玩家将被介绍到迷宫的入口,并被要求选择一个入口。 ``` 你已经到达了地下迷宫的入口。你可以选择进入左、右或中间的入口。 1. 左边的入口 2. 右边的入口 3. 中间的入口 ``` 3. 玩家将根据他们的选择进入不同的房间。每个房间都将提供一些信息和选项。 ``` 你已进入左边的入口。你现在可以选择进入这个房间的左边、右边或中间。 1. 左边的门 2. 右边的门 3. 中间的门 ``` 4. 玩家将继续在地下迷宫中前进,进入更多的房间,直到他们找到宝藏或者失败。如果玩家失败,游戏将结束。 以下是一个基于Java的简单冒险游戏的代码: ```java import java.util.Scanner; public class AdventureGame { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("欢迎来到地下迷宫游戏!请告诉我你的名字:"); String playerName = scanner.nextLine(); System.out.println("你好," + playerName + "!你已经到达了地下迷宫的入口。你可以选择进入左、右或中间的入口。"); int entrance = 0; do { System.out.println("1. 左边的入口"); System.out.println("2. 右边的入口"); System.out.println("3. 中间的入口"); entrance = scanner.nextInt(); } while (entrance < 1 || entrance > 3); int room = 1; while (room > 0 && room < 5) { switch (room) { case 1: System.out.println("你已进入左边的入口。你现在可以选择进入这个房间的左边、右边或中间。"); System.out.println("1. 左边的门"); System.out.println("2. 右边的门"); System.out.println("3. 中间的门"); int choice1 = scanner.nextInt(); if (choice1 == 1) { System.out.println("你走进了一个黑暗的房间,看不见任何东西。"); room = -1; } else if (choice1 == 2) { System.out.println("你进入了一个装满了金币的房间,你赚了很多钱!"); room = 4; } else { System.out.println("你进入了一个空荡荡的房间,什么都没有。"); room = 2; } break; case 2: System.out.println("你已进入中间的入口。你现在可以选择进入这个房间的左边、右边或中间。"); System.out.println("1. 左边的门"); System.out.println("2. 右边的门"); System.out.println("3. 中间的门"); int choice2 = scanner.nextInt(); if (choice2 == 1) { System.out.println("你走进了一个陷阱,你受了重伤!"); room = -1; } else if (choice2 == 2) { System.out.println("你进入了一个装满了武器的房间,你现在更强大了!"); room = 3; } else { System.out.println("你进入了一个空荡荡的房间,什么都没有。"); room = 1; } break; case 3: System.out.println("你已进入右边的入口。你现在可以选择进入这个房间的左边、右边或中间。"); System.out.println("1. 左边的门"); System.out.println("2. 右边的门"); System.out.println("3. 中间的门"); int choice3 = scanner.nextInt(); if (choice3 == 1) { System.out.println("你走进了一个陷阱,你受了重伤!"); room = -1; } else if (choice3 == 2) { System.out.println("你进入了一个装满了宝石的房间,你现在更富有了!"); room = 4; } else { System.out.println("你进入了一个空荡荡的房间,什么都没有。"); room = 2; } break; case 4: System.out.println("你发现了宝藏,你非常幸运!"); room = -1; break; } } if (room == -1) { System.out.println("很遗憾,你失败了。"); } scanner.close(); } } ``` 希望这个简单的Java冒险游戏可以带给您一些乐趣!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值