我似乎被困在似乎是一个非常基本的任务上。我想知道是否有人可能引导我走向正确的方向并向我解释有什么问题。我创建了一个插入了预制值的数组。现在我必须得到这个数组的最小/最大值并显示它们。我一直收到这两个错误
“。java:126:error:类HighArray中的方法getMax无法应用于给定类型;”
“。java:126:error:类HighArray中的方法getMin无法应用于给定类型;”
如果有人可以帮助我并解释原因,我们将不胜感激。谢谢!
class HighArray
{
private long[] a;
private int nElems;
public HighArray(int max)
{
a = new long[max];
nElems = 0;
}
//Search Method
public boolean find(long searchKey)
{
int j;
for(j=0; j<nElems; j++)
if(a[j] == searchKey)
break;
if(j == nElems)
return false;
else
return true;
}
//Insert method
public void insert(long value)
{
a[nElems] = value;
nElems++;
}
//Delete method
public boolean delete(long value)
{
int j;
for(j=0; j<nElems; j++)
if( value == a[j] )
break;
if(j==nElems)
return false;
else
{
for(int k=j; k<nElems; k++)
a[k] = a[k+1];
nElems--;
return true;
}
}
//Display Array Contents
public void display()
{
for(int j=0; j<nElems; j++)
System.out.print(a[j] + " ");
System.out.println(" ");
}
//Max Method
public static int getMax(int[] a)
{
int maxValue = a[0];
for(int i=1;i < a.length;i++)
{
if(a[i] > maxValue)
{
maxValue = a[i];
System.out.print("The max value is" + a[i]);
}
}
return maxValue;
}
//Min Method
public static int getMin(int[] a)
{
int minValue = a[0];
for(int i=1;i<a.length;i++)
{
if(a[i] < minValue)
{
minValue = a[i];
System.out.print("The min value is" + a[i]);
}
}
return minValue;
}
}
public class Assignment
{
public static void main(String[] args)
{
int maxSize = 100;
HighArray arr = new HighArray(maxSize);
arr.insert(77);
arr.insert(99);
arr.insert(44);
arr.insert(55);
arr.insert(-22);
arr.insert(88);
arr.insert(-11);
arr.insert(00);
arr.insert(66);
arr.insert(-33);
arr.display();
arr.getMax();
arr.getMin();
int searchKey = 35;
if( arr.find(searchKey) )
System.out.println("Found" + searchKey);
else
System.out.println("Can't Find " + searchKey);
arr.delete(00);
arr.delete(55);
arr.delete(99);
arr.display();
}
}
答案 0 :(得分:3)
方法:
public static int getMax(int[] a)
和public static int getMin(int[] a)
将int[]
作为输入参数,
但是后来调用它们没有任何参数:arr.getMax();
和arr.getMin();
。
这是您从编译器获得错误的原因。
编辑:
你可能想修改你的方法不是 static 而不是有任何输入参数(数组a
将直接从对象使用而不传递给方法) ,所以你可以在类的对象上使用这样的方法:arr.getMax();
。
为此,请按以下方式更改代码:
public static int getMax(int[] a)
- &gt; public long getMax()
public static int getMin(int[] a)
- &gt; public long getMin()
*注意:getMax
和getMin
方法的返回类型已从int
更改为long
,因为long
是HighArray
的类型set ...
类中的数组。
答案 1 :(得分:0)
变量阴影是问题所在。
public static int getMax(int[] a) // <-- this a is different than the other one
{
int maxValue = a[0];
所以,
代码
public long getMax()
{
long maxValue = a[0];
同样的分钟
答案 2 :(得分:0)
你必须改变你的getMin和getMax方法。
它也不应该是静态的,否则你无法访问该方法中的值数组。 你的数组也是long类型,所以返回值也应该很长。
// Max Method
public long getMax() {
long maxValue = a[0];
for (int i = 1; i < a.length; i++) {
if (a[i] > maxValue) {
maxValue = a[i];
System.out.println("The max value is" + a[i]);
}
}
return maxValue;
}
// Min Method
public long getMin() {
long minValue = a[0];
for (int i = 1; i < a.length; i++) {
if (a[i] < minValue) {
minValue = a[i];
System.out.println("The min value is" + a[i]);
}
}
return minValue;
}