Java 在数组中查找值并返回索引
我想返回一个数组,其中getElem()等于或高于某个特定值 这是我的职责:Java 在数组中查找值并返回索引,java,arrays,Java,Arrays,我想返回一个数组,其中getElem()等于或高于某个特定值 这是我的职责: public static int []findIndex(BufferedImage image,int value) { DataBuffer b = image.getRaster().getDataBuffer(); int array[] = new int[600]; for(int i=0;i<76400;i++) { if(b.getElem(i)
public static int []findIndex(BufferedImage image,int value)
{
DataBuffer b = image.getRaster().getDataBuffer();
int array[] = new int[600];
for(int i=0;i<76400;i++)
{
if(b.getElem(i)>=value)
array[i]=i;
}
return array;
}
您声明的数组大小为600
for(int i=0;i<76400;i++)
发生错误是因为超过了599
如何解决这个问题
嗯,您可以将数组76400
设置为长数组(这对我来说是可疑的),也可以将76400
更改为array.length
(或600
)设置在for
循环中
您声明的数组大小为600
for(int i=0;i<76400;i++)
发生错误是因为超过了599
如何解决这个问题
好的,你可以让你的数组
76400
长(这对我来说是可疑的),或者你可以把76400
改成array.length
(或者600
)放在for
循环中。这是因为你的循环是从0到76400的,比你的数组大得多
public static int []findIndex(BufferedImage image,int value)
{
DataBuffer b = image.getRaster().getDataBuffer();
int array[] = new int[600];
for(int i=0;i<array.length;i++)
{
if(b.getElem(i)>=value)
array[i]=i;
}
return array;
}
publicstaticint[]findIndex(buffereImage图像,int值)
{
DataBuffer b=image.getRaster().getDataBuffer();
int数组[]=新int[600];
for(int i=0;i=value)
数组[i]=i;
}
返回数组;
}
这是因为您的循环从0到76400,远远大于数组的大小
public static int []findIndex(BufferedImage image,int value)
{
DataBuffer b = image.getRaster().getDataBuffer();
int array[] = new int[600];
for(int i=0;i<array.length;i++)
{
if(b.getElem(i)>=value)
array[i]=i;
}
return array;
}
publicstaticint[]findIndex(buffereImage图像,int值)
{
DataBuffer b=image.getRaster().getDataBuffer();
int数组[]=新int[600];
for(int i=0;i=value)
数组[i]=i;
}
返回数组;
}
这是我找到的解决方案
我认为那是最好的
public static int[] findIndex(BufferedImage image, int value) {
DataBuffer b = image.getRaster().getDataBuffer();
int array[] = new int[600];
int j = 0;
for (int i = 0; i < b.getSize(); i++) {
if (b.getElem(i) >= value) {
if (j < 600) {
array[j] = i;
j++;
}
}
}
return array;
}
publicstaticint[]findIndex(buffereImage图像,int值){
DataBuffer b=image.getRaster().getDataBuffer();
int数组[]=新int[600];
int j=0;
对于(int i=0;i=值){
如果(j<600){
数组[j]=i;
j++;
}
}
}
返回数组;
}
这是我找到的解决方案
我认为那是最好的
public static int[] findIndex(BufferedImage image, int value) {
DataBuffer b = image.getRaster().getDataBuffer();
int array[] = new int[600];
int j = 0;
for (int i = 0; i < b.getSize(); i++) {
if (b.getElem(i) >= value) {
if (j < 600) {
array[j] = i;
j++;
}
}
}
return array;
}
publicstaticint[]findIndex(buffereImage图像,int值){
DataBuffer b=image.getRaster().getDataBuffer();
int数组[]=新int[600];
int j=0;
对于(int i=0;i=值){
如果(j<600){
数组[j]=i;
j++;
}
}
}
返回数组;
}
这是我的最后一个函数。
我们应该如何选择一个泛型编程,我做了一些改变a正是关注这一点。
使用“现在有一个列表而不是一个静态数组”
public static int[] findIndex(BufferedImage image, int value) {
DataBuffer b = image.getRaster().getDataBuffer();
ArrayList<Integer> a = new ArrayList<>(20);
int j = 0;
for (int i = 0; i < b.getSize(); i++) {
if (b.getElem(i) >= value) {
a.add(i);
j++;
}
}
int array[] = new int[a.size()];
for (int k = 0; k < a.size(); k++) {
array[k] = a.get(k);
}
return array;
}
publicstaticint[]findIndex(buffereImage图像,int值){
DataBuffer b=image.getRaster().getDataBuffer();
ArrayList a=新的ArrayList(20);
int j=0;
对于(int i=0;i=值){
a、 加(i);
j++;
}
}
int数组[]=新的int[a.size()];
对于(int k=0;k
这是我的最后一个函数。
我们应该如何选择一个泛型编程,我做了一些改变a正是关注这一点。
使用“现在有一个列表而不是一个静态数组”
public static int[] findIndex(BufferedImage image, int value) {
DataBuffer b = image.getRaster().getDataBuffer();
ArrayList<Integer> a = new ArrayList<>(20);
int j = 0;
for (int i = 0; i < b.getSize(); i++) {
if (b.getElem(i) >= value) {
a.add(i);
j++;
}
}
int array[] = new int[a.size()];
for (int k = 0; k < a.size(); k++) {
array[k] = a.get(k);
}
return array;
}
publicstaticint[]findIndex(buffereImage图像,int值){
DataBuffer b=image.getRaster().getDataBuffer();
ArrayList a=新的ArrayList(20);
int j=0;
对于(int i=0;i=值){
a、 加(i);
j++;
}
}
int数组[]=新的int[a.size()];
对于(int k=0;k
打印索引,我打赌它必须大于599!!!!!您正在使用600
初始化数组,因此任何大于599的值都将抛出错误!!!是的,问题是数组的大小。为什么循环到76400
?由于您的数组仅存储601个元素,这可能会导致问题?@Kuchi数组存储600个元素我希望在我的数据缓冲区(76400个位置)中搜索,然后将其存储在数组中。我只需要600个值,因此我声明我的数组具有600个位置。打印索引,我打赌它必须大于599!!!!!您正在使用600
初始化数组,因此任何大于599的值都将抛出错误!!!是的,问题是数组的大小。为什么循环到76400
?由于您的数组仅存储601个元素,这可能会导致问题?@Kuchi数组存储600个元素我希望在我的数据缓冲区(76400 pos)中搜索,然后将其存储在数组中。我只需要600个值,所以我声明我的数组有600个位置。这很好,除非少于600个匹配。我不测试这种可能性,但我的图像有76400个像素,所以,我认为没有600个匹配很难。这是一个解决问题的方法,对于其他人来说,它可能不起作用。在这种情况下,看起来你已经找到了自己问题的答案。如果你愿意,你可以这样标记。这很好,除非匹配少于600个。我不测试这种可能性,但我的图像有76400像素,所以,我认为没有600个匹配很难。这是一个解决问题的方法,对于其他人来说,它可能不起作用。在这种情况下,看起来你已经找到了自己问题的答案。如果你愿意,你可以这样做。