做了一个练习,要求我编写一个程序来读取包含 40,000 位数字的数据文件,并使用这些数字在大小为 200x200 的图形窗口中显示图像。
现在问题要求我用 600x600 屏幕替换之前的 200x200 显示屏,其中每个数字变成 3x3 像素 block 。
//Setting the size of the graphics window
final int WINDOW_DIMENSION = 200;
EasyGraphics generate = new EasyGraphics(WINDOW_DIMENSION,WINDOW_DIMENSION);
//Constructing the arrays
char[][] firstArray = new char[WINDOW_DIMENSION][WINDOW_DIMENSION];
char[] secondArray = scan.toCharArray();
//Using "for" loop to generate 2D array
int line = WINDOW_DIMENSION;
int column = -1;
for (int i = 0; i < WINDOW_DIMENSION*WINDOW_DIMENSION; i++) {
column++;
if (i%WINDOW_DIMENSION == 0) {
line--;
column = 0;
}
firstArray[column][line]=secondArray[i];
}
//Plotting the colours for respective range of numbers
for (int a = 0; a < WINDOW_DIMENSION; a++) {
for (int b = 0; b < WINDOW_DIMENSION; b++) {
if (firstArray[a][b]=='0' || firstArray[a][b]=='1' || firstArray[a][b]=='2' || firstArray[a][b]=='3') {
generate.setColor(66,167,243);
generate.plot(a,b);
}
else if (firstArray[a][b]=='4' || firstArray[a][b]=='5') {
generate.setColor(0,255,77);
generate.plot(a,b);
}
else if (firstArray[a][b]=='6' || firstArray[a][b]=='7') {
generate.setColor(51,183,91);
generate.plot(a,b);
}
else if (firstArray[a][b]=='8' || firstArray[a][b]=='9') {
generate.setColor(102,51,0);
generate.plot(a,b);
}
}
}
}
有什么解决方案可以解决这个问题吗?
最佳答案
如果没有关于generate
和plot
是什么的更多信息,我们只能给出“通用”答案:无论generate.plot(a,b)
正在做,必须完成 3x3 次。因此,将所有对 generate.plot(a,b);
的调用替换为
for (int da=0; da<3; da++) {
for (int db=0; db<3; db++) {
generate.plot(a*3+da,b*3+db);
}
}
<小时/>
编辑:用上面的代码替换每个generate.plot(a,b)
。
之前:
if (firstArray[a][b]=='0' || firstArray[a][b]=='1' ||
firstArray[a][b]=='2' || firstArray[a][b]=='3') {
generate.setColor(66,167,243);
generate.plot(a,b);
}
之后:
if (firstArray[a][b]=='0' || firstArray[a][b]=='1' ||
firstArray[a][b]=='2' || firstArray[a][b]=='3') {
generate.setColor(66,167,243);
for (int da=0; da<3; da++) {
for (int db=0; db<3; db++) {
generate.plot(a*3+da,b*3+db);
}
}
}
关于java - (Java) 将 1x1 像素转换为 3x3 像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26982851/