我应该使用2D数组创建一个图像编辑器。对于这部分,我应该创建代码,通过从左到右翻转来创建图像的镜像。相反,我把它翻转过来。我做错了什么?
public void mirror() {
// TODO Auto-generated method stub
int[] img;
int left = 0, right = data.length -1;
while (right >= left) {
img = data[left];
data[left++] = data[right];
data[right--] = img;
}
}
答案 0 :(得分:0)
多个问题:
1.您使用的是1D阵列。
2. 1d数组上的public static String fromSender(ArrayList<Message> messageList, String pname){
String result = "";
for(int i=0; i<messageList.size(); i++){
if(messageList.get(i).getSender().equals(pname)){
result += messageList.get(i).getContent() + " ";
}
}
return result;
}
为您提供行数。
3.现在,当您使用data.length
进行反转时,最终会在2d数组中反复行而不是列。
因此,您输出逻辑上不正确。
使用镜像方法应该是这样的 -
data.length
答案 1 :(得分:0)
问题是你只是镜像构成矩阵的数组,而不是反转数组的顺序。假设RectangularEntityClass.h: In constructor ‘RectangularEntityClass::RectangularEntityClass()’:
RectangularEntityClass.h:12:7: error: no matching function for call to ‘MapEntityClass::MapEntityClass()’
class RectangularEntityClass:public MapEntityClass
^
RectangularEntityClass.h:12:7: note: candidates are:
In file included from main.cpp:1:0:
MapEntityClass.h:32:5: note: MapEntityClass::MapEntityClass(const PixelLocationClass&, const ColorClass&)
MapEntityClass(
^
MapEntityClass.h:32:5: note: candidate expects 2 arguments, 0 provided
实际上是一个2D数组开始,这应该适合你。
data
答案 2 :(得分:0)
比我认为的其他答案更简单的方法:
int[][] mirrored = new int[data.length][data[0].length];
for (int i = 0; i < data.length; i++) {
for (int j = 0; j < data[i].length; j++) {
mirrored[i][data[i].length - j - 1] = data[i][j];
}
}