当前位置: 首页 > 知识库问答 >
问题:

java.awt.Color getRed()返回“无法找到符号”[duplicate]

杜凯
2023-03-14

我试着做Sedgewick的《Java编程入门》一书中的这个练习3.1.6。

import java.lang.Object;
import java.awt.Color;
import java.util.*;
import java.util.Collections;


public class treetseks{
    public static void main(String[] args){
        List<Color> list;
        list = new ArrayList<Color>();
        Picture pic= new Picture(args[0]);

        int width = pic.width();
        int height = pic.height();

        Picture picr = new Picture(width, height);
        Picture picg = new Picture(width, height);
        Picture picb = new Picture(width, height);

        for (int y = 0; y < height; y++){
            for (int x = 0; x < width; x++){
                Color redpixel = pic.getRed(x, y);
                Color greenpixel = pic.getGreen(x, y);
                Color bluepixel = pic.getBlue(x, y);
                list.add(p);
                picr.set(x, y, redpixel);
                picg.set(x, y, greenpixel);
                picb.set(x, y, bluepixel);
            }
        }

        System.out.println(list);
        pic.show();
        picr.show();
        picg.show();
        picb.show();
    }
}

当我试图编译这段代码时,我得到了一条编译错误消息“Cannt find symbol”,并将其绑定到getRGB()方法。这给了我一个想法,我需要导入一个类什么的。但我已经推出了java.awt.color,我认为这应该已经足够了。

班级图片来自此站点

http://introcs.cs.princeton.edu/java/stdlib/picture.java.html

并且与该类位于同一文件夹中。

如果我将getRed()getGreen()getBlue()方法更改为get(),那么代码工作得很好。我想这是因为我接着从类图片而不是类颜色使用get()方法?我说的对吗?我做错了什么,如何使用getRed()getGreen()和getBlue()方法?

共有2个答案

曾嘉瑞
2023-03-14

您尝试使用的方法:Color getRed(int x,int y)Color getGreen(int x,int y)Color getBlue(int x,int y)不存在。

存在的是Color get(int x,int y)方法,然后可以使用Color方法int getRed()int getGreen()int getBlue()

因此,您应该将for循环的一部分更改为如下所示:

Color color = pic.get(x, y);
int redPixel = color.getRed();
int greenPixel = color.getGreen();
int bluePixel = color.getBlue();

picr.set(x, y, new Color(redPixel, 0, 0);
picg.set(x, y, new Color(0, greenPixel, 0));
picb.set(x, y, new Color(0, 0, bluePixel));

我还想指出,您将来可以非常容易地使用类似BufferedImage的类(您不必重新发明轮子)。最后,根据Java的标准命名约定,单独颜色值的名称应为RedPixelGreenPixelBluePixel而不是分别为RedPixelGreenPixel

许明朗
2023-03-14

您引用的Picture类只有方法public Color get(int x,in y);所以更改部分:

            Color redpixel = pic.getRed(x, y);
            Color greenpixel = pic.getGreen(x, y);
            Color bluepixel = pic.getBlue(x, y);

        Color pixelColor = pic.get(x, y);
        int red = pixelColor.getRed();
        int green = pixelColor.getGreen();
        int blue = pixelColor.getBlue();
        Color redPixel = new Color(red, 0, 0);
        Color greenPixel = new Color(0, green, 0);
        Color bluePixel = new Color(0, 0, blue);

因此可能是:

import java.lang.Object;
import java.awt.Color;
import java.util.*;
import java.util.Collections;


public class treetseks{
    public static void main(String[] args){
        List<Color> list;
        list = new ArrayList<Color>();
        Picture pic= new Picture(args[0]);

        int width = pic.width();
        int height = pic.height();

        Picture picr = new Picture(width, height);
        Picture picg = new Picture(width, height);
        Picture picb = new Picture(width, height);

        for (int y = 0; y < height; y++){
            for (int x = 0; x < width; x++){
                Color pixelColor = pic.get(x, y);
                list.add(pixelColor );
                int red = pixelColor.getRed();
                int green = pixelColor.getGreen();
                int blue = pixelColor.getBlue();
                Color redPixel = new Color(red, 0, 0);
                Color greenPixel = new Color(0, green, 0);
                Color bluePixel = new Color(0, 0, blue);

                picr.set(x, y, redPixel);
                picg.set(x, y, greenPixel);
                picb.set(x, y, bluePixel);
            }
        }

        System.out.println(list);
        pic.show();
        picr.show();
        picg.show();
        picb.show();
    }
}
 类似资料:
  • 我正在创建一个程序,用户(教师)在其中输入一组百分比分数,并对这些分数进行分析,输出框打印出平均值、最小值/最大值、范围和“R级”、“1级”、“2级”等分数。 我面临的问题是将分数分为不同级别的方法。当我尝试将数组返回到main方法,并尝试将其打印到输出时,我得到了一个数组错误,即“找不到符号” 因此,当我使用主方法打印所有信息时,我应该将levelCount数组放入另一个数组中,我做到了。以下是

  • 我想构建我的项目,但每次我尝试时,控制台中都会显示此错误: 找不到play-services-ads.aar(com.google.android.gms:play-services-ads:12.0.1)。在以下位置搜索:https://jcenter.bintray.com/com/google/android/gms/play-services-ads/12.0.1/play-service

  • Base64找不到符号 为什么这行不通?

  • 我在生成签名的apk时出错 它在构建APK时工作正常。 这里有什么问题?

  • DBHelper。JAVA LoginSevlet.java 我正在尝试访问LoginServlet中的DBHelper类,而编译i做了javac DBHelper.javajavac-cp"C:\User\dell\Desktop\MYServlet\WEB-INF\lib\servlet-api-2.5.jar;"LoginServlet.javaLoginServlet.java:13:错误

  • 我是Maven新手,尝试使用Log4j编译一个简单的程序。当我使用mvn compile编译项目时,它会下载所有jar。我已经将依赖项添加到pom中。xml,但不确定为什么它不能识别slf4j。罐子下面是pom的程序和代码片段。xml 错误: 组织。阿帕奇。专家生命周期。LifecycleExecutionException:无法执行目标组织。阿帕奇。专家插件:maven编译器插件:3.7。0:M