Java初心者です。
音楽の音階をとりあえずCLIで操作したいと思い、
音階の基礎となるクラスを生成したいんですが…
コンストラクタの引数がエラーとして吐かれてうまくいきません。
どんな風に直せばいいのか。それとEnumMapとはライブラリクラスという理解で
いいのか否かを教えていただけませんか?
もう一つお願いします。
”#”はjavaでは文字列として使えないんですか?特殊文字として処理されてしまって。
音階を文字で表示したいので”#”が使えると便利なのですが…使えるようにするにはどんな風に記述すればいいのですか?”¥”を表示したければ”¥¥”と記述すれば良いなどの記事は見たのですが”#”はできないのでしょうか。
###発生している問題・エラーメッセージ
エラーメッセージ SoundMapList.java:16: エラー: EnumMapに適切なコンストラクタが見つかりません(Class<SoundMapList>) SoundMap = new EnumMap<Sound,Integer>(SoundMapList.class); ^ コンストラクタ EnumMap.EnumMap(Class<Sound>)は使用できません (引数の不一致: Class<SoundMapList>をClass<Sound>に変換できません:) コンストラクタ EnumMap.EnumMap(EnumMap<Sound,? extends Integer>)は使用できません (引数の不一致: Class<SoundMapList>をEnumMap<Sound,? extends Integer>に変換できません:) コンストラクタ EnumMap.EnumMap(Map<Sound,? extends Integer>)は使用できません (引数の不一致: Class<SoundMapList>をMap<Sound,? extends Integer>に変換できません:)
###該当のソースコード
Java
10. package sample21; 21. import java.util.EnumMap; 32. 43. public class SoundMapList { 54. 65. private enum Sound{ 76. C,C_,D,D_, 87. E,F,F_,G, 98. G_,A,A_,B; 109. } 1110. 1211. private EnumMap<Sound,Integer> SoundMap; 1312. 1413. public SoundMapList(){ 1514. SoundMap = new EnumMap<Sound,Integer>(SoundMapList.class); 1615. 1716. SoundMap.put(Sound.C,1); 1817. SoundMap.put(Sound.C_,2); 1918. SoundMap.put(Sound.D,3); 2019. SoundMap.put(Sound.D_,4); 2120. SoundMap.put(Sound.E,5); 2221. SoundMap.put(Sound.F,6); 2322. SoundMap.put(Sound.F_,7); 2423. SoundMap.put(Sound.G,8); 2524. SoundMap.put(Sound.G_,9); 2625. SoundMap.put(Sound.A,10); 2726. SoundMap.put(Sound.A_,11); 2827. SoundMap.put(Sound.B,12); 2928. } 3029. 3130. 3231. }
###試したこと
ここの変数名をとりあえず変えてみたのコンパイルしてみたのですが・・
7ステップで理解するJavaでの列挙型/enum使用法 (3/3)
###補足情報(言語/FW/ツール等のバージョンなど)
java 1.8.0_152
java(TM) SE Runtime Enviroment (build 1.8.0_152-b16)
回答1件
あなたの回答
tips
プレビュー