java初心者です、宜しくお願いします。
あるボタンをクリックして、そのボタンから文字を取得、ある配列に入れた
サウンドファイルのファイルネームを取得して、音をならしたいと考えています。
しかし、配列に入れたサウンドファイルのファイルネームを取得しようとすると
"オーディファイルをコンポネントにキャストできません"みたいなエラーが出ます。
どのようにしてファイル名を取得してやればいいのでしょうか。
宜しくお願いします。
================================================
public class MySoundPlayer
{
static AudioClip[] sdStrage = new AudioClip[45] ;
String sds ;
public MySoundPlayer( String sds )
{
this.sds = sds ;
for( int i = 0 ; i <= 44 ; i ++ )
{
String fName = sdStrage[i].getName() ;
if( sds == fName )
{
sdStrage[i] .play() ;
}
else
{
// System.out.println("Error") ;
}
}
}
}
===================================================
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException:
sun.applet.AppletAudioClip cannot be cast to java.awt.Component
at MySoundPlayer.<init>(MySoundPlayer.java:18)
at Aiueo.actionPerformed(Aiueo.java:678)
====================================================
No.3ベストアンサー
- 回答日時:
for( int i = 0 ; i <= 44 ; i ++ )の部分は
for( int i = 0 ; i <= sdStrage.length ; i ++ )
にすれば配列の要素の数が変わってもこのfor文の部分は変更をかけなくてよい形になります。(配列変数名.lengthで配列の要素の数を取得できるため)。
あと、文字列は"=="で比較してはなりません。”==”は等値(アドレスが同じか)を判定します。
等価(アドレスが違ってもよいのでオブジェクトが同じか)を判定するのは"equals()"で比較する必要があります(String型の比較も同じです)。
なので「java.lang.Objectクラス」のequalsメソッドをオーバーライドして、「何をもって同じものか」を比較する処理を記述したあと、if(sds.equals(fName))に変更したほうが良いと思われます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
[Ljava.lang.Stringってなんですか
-
【C#】ハッシュテーブル(連想...
-
この警告はどうすれば?
-
main(String[] args) の args...
-
配列をセッションに割り当てた後で
-
sqlparamaterでIN句を使いたい。
-
Generics で型チェック
-
csvファイルを2次元配列に格納
-
javaについて
-
javaでEUC-JP文字列→UTF-8への変換
-
配列の中に複数存在する数がい...
-
Struts:可変個数のテキストボ...
-
Javaで文字と数字が混ざったも...
-
JAVAのNEW配列生成とガベージコ...
-
java
-
セッションを使ったint型の値の...
-
javaで大容量テキストファイル...
-
javaの乱数生成プログラム-バグ...
-
CSVファイルを二次元配列に格納...
-
キャストの仕方?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列で、値の入っている要素数...
-
【C#】ハッシュテーブル(連想...
-
[Ljava.lang.Stringってなんですか
-
javamailで複数人にメールを送...
-
この警告はどうすれば?
-
main(String[] args) の args...
-
javaで大容量テキストファイル...
-
Javaで文字と数字が混ざったも...
-
ページング
-
C言語でunsigned char配列を連...
-
Javaで文字を漢字であるか否か...
-
配列の中に複数存在する数がい...
-
C#で動的配列Listの中身をListB...
-
『args[]』とは?
-
同じ配列またはクラスを、2回...
-
java StringとString[]の違い
-
配列をセッションに割り当てた後で
-
【Ajax通信&Java】配列の受け取...
-
セッションを使ったint型の値の...
-
forループの評価(条件)式につ...
おすすめ情報