所以我做了这个程序,我希望它不能创建只有黑白的8 x 8尺寸的图像,但是它只显示白色,而不是随机分布黑白。这是我的代码。如果有人可以帮助那会很棒:D

package de.gamingengine.main;

import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.File;
import javax.imageio.ImageIO;

public class Main {

    public static void main(String args[])throws IOException {

        int width = 8;
        int height = 8;
        Color c = null;

        BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);

        File f = null;

        for(int y = 0; y < height; y++) {

            for(int x = 0; x < width; x++) {

                int blackorwhite = (int)Math.random()*10;

                if(blackorwhite >= 5) {

                    c = Color.BLACK;

                } else if(blackorwhite < 5){

                    c = Color.WHITE;

                }

                img.setRGB(x, y, c.getRGB());

            }

        }

        try {

            f = new File("C:\\Users\\Linus\\Desktop\\Out.png");
            ImageIO.write(img, "png", f);

        } catch (IOException e) {

            System.out.println("Error: " + e);

        }

    }

}

最佳答案

问题是运算符的优先级。这里 :

(int) Math.random() * 10


首先,您将Math.random()的结果强制转换为int。由于此方法从[0,1)返回值,因此将其强制转换为int,因此它始终为0,然后乘以10,但最后仍为0。

将您的代码更改为:

int blackorwhite = (int) (Math.random() * 10);

关于java - 我想制作一个随机图像生成器,但是它不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56825653/

10-09 13:28