2016-12-09 1 views
-2

これはJavaの初心者です。ユーザが定義したarraylistのランダム()

私はgetFilmID()、getFilmTitle()、getFilmDuration()などのメソッドだけを含むfilmsというクラスを持っています。このクラスのコードを含める必要はありませんが、関連性があります。

私はユーザーがmyfilmsというarraylistに保存したランダムなフィルムを表示する2番目のクラスを持っています。

これまでのところ、私は "演算子*は、ArrayListの引数の型(複数可)、二重のために定義されていない"

配列リスト

public static ArrayList<Films> myfilms = new ArrayList<Films>(); 

とランダム方法

private static void randomFilm() 
{ 
    int num = (int) (Math.random()*myfilms); 
    System.out.println("The film is: " + myfilms); 
} 

を持っています

私はこの権利を持っていることに近いですが、誰が知っていますか。私は1マイル離れているかもしれない。

+0

を使用するには、エラーメッセージの意味を作ってみましたがありますか? doubleとArrayListで演算子 '*'を使うのは意味がないことを伝えます。ダブルナンバーとリストの乗算は何を与えますか?何を本当に増やしたいですか?あなたは何を結論しますか?エラーメッセージは、多くの良い情報を提供し、何が間違っているかについてのヒントを提供します。それらを無視しないでください。また、java.util.Random.nextInt(int n)を使用する必要があります。 –

+0

あなたは何をしようとしていますか?あなたが範囲内でランダムなものを探していると思うので、リスト内のランダムなアイテムを取得していますか? – zombie

答えて

2

int num = (int) (Math.random() * myFilms.size());

myFilmsはあなただけArrayListdoubleを掛けることができないので、それは、ArrayListだ、数のインスタンスではありません。 あなたがしたいことは、myFilmsのサイズを増やすことだと思いますので、myFilms.size()を使用してください。

+0

大変ありがとうございました。これは助けられました..私はこの間違いをもう一度覚えていません。 – jomot

+0

あなたは大歓迎です。 – EmOwen

1

これは単純に機能しません。

あなたは全体の数(理想的には(0〜myfilms.size)を取得するために、ランダムを使用し;その後、あなたは、単にからあなたのリストをそのランダムに選択された映画を取得するmyfilms.get(thatIndex);を行う他に

言葉:あなたのコードは、myfilmsオブジェクトに乗算演算子「*」を使用して何の意味も持たない、とあなたに*が

double [ left hand side --- Math.random() ] 

のために定義されていないというメッセージが表示されます。

代わりに、たとえばMath.random * myfilms.size()を使用してそのインデックスを計算します。

それとも、単に直接Random.nextInt(int)

関連する問題