2016-05-14 26 views
-3

かなり基本的な割り当てであるように思えます。誰かが私を正しい方向に導き、何が間違っているのかを私に説明できるかどうか疑問に思っていました。私はpremade値が挿入された配列を作成しました。今度は、この配列の最小値/最大値を取得して表示する必要があります。私は誰もが、おそらく私を助け、これがある理由を説明することができれば、これらの2つのエラー配列の最小値/最大値

".java:126: error: method getMax in class HighArray cannot be applied to given types;"

".java:126: error: method getMin in class HighArray cannot be applied to given types;"

を得続ける、それをいただければ幸いです。ありがとうございました!

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(); 
    } 
} 
+1

今後の参照用:次回は、関連するコードセグメントのみを投稿しようとします。コード全体をコピー&ペーストすることはしばしば実用的ではなく、簡単な答えを得ることはできません。 –

+0

は 'int'の代わりに' long [] 'と互換性のある' max'と 'min'の非静的バージョンを実装しています。これはOKです。 – vaxquis

答えて

3

方法:

  • public static int getMax(int[] a)
  • public static int getMin(int[] a)

、その入力パラメータとしてint[]を持って
しかし、彼らは後にパラメータを指定せずに呼び出されます。arr.getMax();arr.getMin();

これは、コンパイラから取得したエラーの原因です。

EDIT:あなたはおそらくない静的と任意の入力パラメータ(aがメソッドに渡されたオブジェクトから直接使用していないことになる配列)、これを持っていないようにあなたの方法を変更したい

arr.getMax();のようにクラスのオブジェクトに対してメソッドを使用できます。これを行うには、次のようにコードを変更する

  • public static int getMax(int[] a) - >​​
  • public static int getMin(int[] a) - >public long getMin()

*注:getMaxの戻り値の型とgetMinの方法がintからlongに変更されました。これはlongHighArrayクラスの配列の型

+1

また、 'int'を' long'に変更する必要があります。 – Andreas

+0

@アンドレアス:私は答えを更新しました –

0

可変シャドーイングが問題です。

public static int getMax(int[] a) // <-- this a is different than the other one 
    { 
    int maxValue = a[0]; 

ので、

  1. あなたは本当に方法は、静的であってはならない、値
  2. をint型ではない
  3. あなたの配列が長い値を持つパラメータは必要ありません

コード

public long getMax() 
    { 
    long maxValue = a[0]; 

最小と同じ

+0

私はあなたの提案を取り、コードを変更しました。今私の問題は、1分だけ必要なときに複数回ループを繰り返すことです。 「77 99 44 55 22 88 -11 0 66 33 最大値は最小値は最小値が最小値である-11 77 44 22 88 -11を検索することはできません22 で44 で99 です66 33 " – WCC96

+0

ハハを読むのはひどいです。私はあなたがスペースを追加するために入力を押すことができなかったことを認識していない。 – WCC96

+1

あなたのprintステートメントはforループ内にあります...あなたは何が起こると思いますか? –

0

getMinとgetMaxメソッドを変更する必要があります。

静的でない場合もあります。そうでない場合は、そのメソッドのvalue配列にアクセスできません。 また、配列の型が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; 
} 
関連する問題