2016-03-31 18 views
-2

私はあなたが入力した3つの数字を出力し、それらの数字の平均を出力するプログラムを作ろうとしています。必要なメソッドを作成した後、コードをコンパイルすると、scoresのメソッドを使用するとエラーが発生しました。 scoresmPrint()またはaverage()と呼ぶときに、どのように参照することができないのか分かりません。呼び出すオブジェクトを参照するメソッドを作成するにはどうすればよいですか?

コードをコンパイルすると、scores.mPrint(3);scores.average();の行にエラーがスローされます。これらのエラーは、 The method(ここの方法)is undefined for the type ArrayList<Double>です。

私は、インポート:あなたが宣言したクラスがgetメソッドを持っていないため、java.util.ArrayListのとjava.util.Scanner

public class OOPtraining { 

ArrayList<Double> scores = new ArrayList<Double>(); 

public void mPrint(Integer prints) { 

    for (Integer i =0;i<prints; i++) { 
     System.out.println(scores.get(i)); 
    } 

} 

public void average() { 

    double divi = scores.get(0)+scores.get(1)+scores.get(2); 
    System.out.println(divi/3); 

} 

public void main(String[] args) { 

    ArrayList<Double> scores = new ArrayList<Double>(); 

    Scanner reader = new Scanner(System.in); 


    // down here is where I input the scores and then add them to "scores" 
    System.out.println("Enter a score: "); 
    double score1 = reader.nextDouble(); 
    while (true) { 
     System.out.println("Type a double-type number:"); 
     try { 
      score1 = Double.parseDouble(reader.next()); 
      break; 
     } catch (NumberFormatException ignore) { 
      System.out.println("Invalid input"); 
     } 
    } 
    scores.add(score1); 


    System.out.println("Enter another score: "); 
    double score2 = reader.nextDouble(); 
    while (true) { 
     System.out.println("Type a double-type number:"); 
     try { 
      score2 = Double.parseDouble(reader.next()); 
      break; 
     } catch (NumberFormatException ignore) { 
      System.out.println("Invalid input"); 
     } 
    } 
    scores.add(score2); 


    System.out.println("Enter another score: "); 
    double score3 = reader.nextDouble(); 
    while (true) { 
     System.out.println("Type a double-type number:"); 
     try { 
      score3 = Double.parseDouble(reader.next()); 
      break; 
     } catch (NumberFormatException ignore) { 
      System.out.println("Invalid input"); 
     } 
    } 
    scores.add(score3); 
    //here is where I stop adding the scores to "scores" 


    scores.mPrint(3); 
    scores.average(); 


    } 
} 
+4

何が得られますか(...)? –

+2

どのようにして間違っているようですか? –

+0

あなたの期待することを教えてください。それは意味をなさない。 –

答えて

4
this.get(i) 

これは、コンパイルに失敗します。あなたが何をしようとしているのかは非常に不明です。

あなたのクラスのメンバー変数にアクセスしようとしていますが、これはあなたがOOPTrainingにいるクラスを指しています。あなたがしようとしているのは、得点ArrayListにアクセスすることです。あなたができるようにするためには、得点はあなたのメインメソッドのローカル変数ではなく、クラス変数でなければなりません。それを見て、それがあなたを始めるはずです。

+0

私は最近、説明のために残りのコードを追加しました。私は回答者がそれ以外の部分を必要としているとは思わなかったが、うまくいけばこれが助けになる。 –

1

this.get(int) を呼び出そうとしている同じクラスにget()という名前のメソッドがなければなりません。それ以外の場合は機能しません。 あなたはリストを使って作業していると思いますが、それを忘れてしまったと思います。

+0

私は最近、Codecademyのメソッド、ArrayLists、HashMapsを使って練習しました。私は完全に公開されていないので、 "this"の使い方は完全にはわかりません。 –

0

thisは、クラスOOPtrainingのインスタンスを表しています。 this.get(0)は、OOPtrainingクラスのget()メソッドを呼び出し、そのメソッドの最初の唯一の引数として0を渡します。

問題は、あなたのクラスOOPtrainingget()方法がないということです。 get()メソッドをOOPtrainingに追加するか、またはget()を呼び出してそのクラスのインスタンスを提供する可能性があります。コードはmyList.get(0)のようになります。

0

this.get(i)に失敗した場合、2つの間違いがあります。

まず、クラスには名前がgetのメソッドがない可能性があります。したがって、エラーを修正するには、クラスにgetメソッドを定義する必要があります。

第2に、getメソッドをお持ちの場合は、staticキーワードで定義した可能性があります。この場合、メソッドの定義からキーワードstaticを削除します。もう1つの解決方法は、thisキーワードをクラス名で置き換えることです。静的メソッドはオブジェクトとは独立しているため、メソッドを構築しなくても呼び出すことができます。

+0

私はそれを使用するかどうかによって 'static'が自分のコードにどのように影響しますか? –

+0

私はちょうど私の答えを編集しました、あなたはそれについてさらに検索することができます。 – cdaiga

関連する問題