我试着做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()方法?
您尝试使用的方法: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的标准命名约定,单独颜色值的名称应为RedPixel
、GreenPixel
和BluePixel
而不是分别为RedPixel
、GreenPixel
。
您引用的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