2017-06-06 13 views
-3

私はこのコードに問題があります。コンソールは私にこのエラーを表示し、私はそれを把握することはできません。 "7行目のfile.java:エラー: ';'予期している ""エラー"; '予期した "

int adjacentElementsProduct(int[] inputArray) { 
    int numberofElements = inputArray.length(); 
    int [] products = new int [numberofElements]; 
    for (int firstNumber = 0; numberofElements > firstNumber; firstNumber++) { 
     products [firstNumber] = product (inputArray [firstNumber], inputArray [1+firstNumber]); 
    }; 
    int maxValue() { 
     int x = products [0]; 
     for (int i = 1; i < products.length; i++) { 
      if (products [i] > x){ 
       x = products [i]; 
      } 
     } 
     return x; 
    } 
    return maxValue; 
} 

誰でも私にこれを助けることができたら、私は本当に感謝します。 ありがとうございます。

+1

ここには多くの問題があります。配列に 'length()'メソッドはありませんが 'length'フィールドはありません。あなたは他のメソッド内でメソッドを宣言しています(Javaではできません)。 'adjacentElementsProduct'メソッドでは、' maxValue'メソッドの結果を返すには、 'maxValue'変数を返すことになります。' maxValue'メソッドの結果を返すには、return maxValue();と書く必要があります(ほとんどのメソッドは、引数がない場合は少なくとも '()'で表示されます)。 'maxValue'の中に' products [0] 'にアクセスしようとしていますが、どこにも定義されている' products'配列はありません。 'product'メソッドもありません。 – Pshemo

答えて

0

maxValueは、adjacentElementsProductの内部に定義されています。

0

adjacentElementsProductメソッド内でメソッドmaxValueを宣言しています。これを変更するには、これを抽出し、配列を受け入れ、最大値のintを返す必要があります。あなたがメソッドを持っているので、あなたが適切にフォーマットされていません

最後に、このことを考慮してreturn maxValue(products);

0

コードとしてそれを使用する必要がありますので、

int maxValue (int[] products) { 
    int x = products [0]; 
    for (int i = 1; i < products.length; i++) { 
     if (products [i] > x){ 
      x = products [i]; 
     } 
    } 
    return x; 
} 

方法は、入力配列の長さを検証していませんmaxValue内のメソッドadjacentElementsProduct

これはどのようにすべきである:

int adjacentElementsProduct(int[] inputArray) { 
    int numberofElements = inputArray.length(); 
    int [] products = new int [numberofElements]; 
    for (int firstNumber = 0; numberofElements > firstNumber; firstNumber++) { 
     products [firstNumber] = product (inputArray [firstNumber], inputArray [1+firstNumber]); 
    } 
    return maxValue; 
} 

int maxValue() { 
    int x = products [0]; 
    for (int i = 1; i < products.length; i++) { 
     if (products [i] > x){ 
      x = products [i]; 
     } 
    } 
    return x; 
} 

maxValueの方法

の宣言は、それが

+0

私は初心者ですので、メソッド内にメソッドを置くことができないことに気づきました。あなたのコメントは私に多くの助けになります。ありがとうございました。 :D。 –

+0

@Thang Nguyenまた、あなたのコードにはいくつかの問題があります。 ProductはadjacentElementsProductメソッドで宣言された配列です。メソッドのmaxValueにはアクセスできないため、引数として受け入れる必要があります。さらに、長さは配列のプロパティであり、メソッドではないので、単にinputArray.lengthとする必要があります。 最後に、maxValue関数の呼び出しも大丈夫ではありません。return maxValue(); (もちろん、あなたが本当にreturnステートメントでそれを呼びたいのであれば) – redbaron

0

を助けたホープは前にも、あなたは、forループを閉じた後に一対一の余分な/無駄にセミコロンを持っていますみんなのコメントを言葉に入れてください。配列はデータフィールドを使用して長さにアクセスします。これはあなたが使用しないメソッドではないからです()。

array.length 

次の事はあなたのforループでも起こってからそれを防ぐ最後のブラケットの最後にセミコロンを持っています。だからそれを取り除く。

次に、別のメソッドの中にメソッドを宣言することはできません。 2番目のメソッドをこのメソッドの外に記述し、それをもう1つのメソッドの内部で呼び出します。

次に、あなたがしたようにnextValueメソッドを呼び出すことはできません。あなたはそれを呼び出すためにそこにそれを置くことができないにもかかわらず、あなたはそうのようにそれを呼び出す必要があり:

あなたが何をしたか

あなたは何をすべき
return maxValue; 

/*something*/.nextValue(); 

はこれらの事を修正しますあなたはエラーを取り除くべきです。

関連する問題