gpt4 book ai didi

java - 我正在尝试用java绘制一个NxN棋盘,但是打印出一个白色的空白屏幕

转载 作者:行者123 更新时间:2023-11-30 02:47:25 25 4
gpt4 key购买 nike

我是一名在大学刚开始学习java的学生。所以在今天的类(class)中,我的老师给了我一些作业,其中包括我必须使用 StdIn.Draw 库编写一个程序,当您输入数字 N 时,它会打印出一个 NxN 的棋盘,高度和宽度也为 N。我决定使用 NxN 数组并将某些元素设置为一个值(例如 true),将其他元素设置为另一个值。之后,我使用该库根据我刚刚创建的数组绘制棋盘。它看起来像这样:

class chessboard {
public static void main(String[] args) {
int N = StdIn.readInt();
boolean[][] hi = new boolean[N][N];
double r = 1 / N;
int x = 0;
for (int i = 0; i < N; i++){
for (int j = 0; j < N; j++){

if ((int)(i+j)%2 == 0)
hi[i][j] = true;
else {
hi[i][j] = false;
}
}
}
StdDraw.setXscale(0.0, 5.0);
StdDraw.setYscale(0.0, 5.0);
int i = 0;
int j = 0;
double a = 1.0;
double b = 1.0;
while ((a < N) && (i < N)){
while ((b < N) && (j < N)){
if (hi[i][j] != true){
StdDraw.setPenColor(StdDraw.BLACK);
StdDraw.filledSquare(a ,b, r);
}
else {
StdDraw.setPenColor(StdDraw.RED);
StdDraw.filledSquare(a ,b, r);
}
b = b + r;
j++;
}
b = 1.0;//reset b after the inner while loop
a = a + r;
i++;
}
}
}

当我测试运行它时,它只打印出一个白色的空白屏幕,没有其他内容。我找不到我的算法有什么问题,并且我多次尝试调整初始a和b坐标的大小以及X和Y比例,但它就是不起作用。我试着问过我的 friend ,但他们也不知道。

这是我的问题截图:

enter image description here

抱歉,如果我的英语不好,因为我不是母语人士。如果您能回答,请让我保持简单,因为我刚刚开始学习编码。谢谢。

哦,还有一件事。我正在根据这本书学习:http://introcs.cs.princeton.edu/java/home/

最佳答案

这使用整数除法,因为两个操作数都是 int。

double r = 1 / N; // = 0; !!

因此强制转换一个操作数,或将其更改为:

double r = 1.0 / N;

另外,对于内部 while 循环,初始化计数器,您在 while 循环之后重置了 b,但没有重置 j。使用 for 循环可以这样写:

double a = 1.0;
for (int i = 0; i < N; ++i) {
double b = 1.0;
for (int j = 0; j < N; ++j) {
StdDraw.setPenColor(hi[i][j] ? StdDraw.RED: StdDraw.BLACK);
StdDraw.filledSquare(a ,b, r);
b += r;
}
a += r;
}

不确定定位。

顺便说一句

        if ((int)(i+j)%2 == 0)
hi[i][j] = true;
else {
hi[i][j] = false;
}

变成了

        hi[i][j] = (i + j) % 2 == 0;

还有

       if (hi[i][j] != true){
// Better:
//if (!hi[i][j]) {
StdDraw.setPenColor(StdDraw.BLACK);
StdDraw.filledSquare(a ,b, r);
}
else {
StdDraw.setPenColor(StdDraw.RED);
StdDraw.filledSquare(a ,b, r);
}

变成了

        StdDraw.setPenColor(hi[i][j] ? StdDraw.RED : StdDraw.BLACK);
StdDraw.filledSquare(a ,b, r);

关于java - 我正在尝试用java绘制一个NxN棋盘,但是打印出一个白色的空白屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39741467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com