前提・実現したいこと
MStringObj の #toUpperCase と #toLowerCase を実装したいのですが、うまくいきません。
発生している問題・エラーメッセージ
MStringObj.java:115: エラー: クラス MStringObjのメソッド charAtは指定された型に 適用できません。 char a = this.charAt(); ^ 期待値: int 検出値: 引数がありません 理由: 実引数リストと仮引数リストの長さが異なります MStringObj.java:116: エラー: charは間接参照できません char[] b = a.toUpperCase(); ^ MStringObj.java:117: エラー: MStringはabstractです。インスタンスを生成することは できません return new MString(b); ^ MStringObj.java:126: エラー: 不適合な型: charをchar[]に変換できません: char[] a = this.charAt(i); ^ MStringObj.java:127: エラー: シンボルを見つけられません char[] b = a.toLowerCase(); ^ シンボル: メソッド toLowerCase() 場所: タイプchar[]の変数 a MStringObj.java:129: エラー: シンボルを見つけられません return new MStringObj(b); ^ シンボル: 変数 b 場所: クラス MStringObj エラー6個
該当のソースコード(MStringObj)
Java
1public class MStringObj implements MString { 2 3 private char[] chars; 4 5 public MStringObj(char[] chars) { 6 if (chars == null) { 7 throw new IllegalArgumentException(); 8 } 9 10 this.chars = chars; 11 } 12 13 public MStringObj() { 14 this.chars = new char[0]; 15 } 16 17 public char[] getChars() { 18 return this.chars; 19 } 20 21 public char charAt(int i) { 22 char[] a = new char[i]; 23 return a[i]; 24 } 25 26 public int length() { 27 return this.chars.length; 28 } 29 30 public boolean contains(char c) { 31 for (int i = 0; i < chars.length; i++) { 32 if (chars[i] == c) { 33 return true; 34 } 35 } 36 return false; 37 } 38 39 public int count(char c) { 40 int x = 0; 41 for (int i = 0; i < chars.length; i++) { 42 if (chars[i] == c) { 43 x++; 44 } 45 return x; 46 } 47 } 48 49 public char[] toCharArray() { 50 return this.chars; 51 } 52 53 public MString append(MString s) { 54 char[] a = s.toCharArray(); 55 char[] b = new char[this.chars.length + a.length]; 56 return new MStringObj(b); 57 } 58 59 public MString replace(MString find, MString replace) { 60 char[] a = find.toCharArray(); 61 char[] b = replace.toCharArray(); 62 char[] c = new char[this.chars.length - a.length + b.length]; 63 return new MStringObj(c); 64 } 65 66 public Integer firstOccurrence(char c) { 67 int x = x; 68 if (this.contains(c) == false) { 69 return null; 70 } else { 71 for (int i = 0; i < chars.length; i++) { 72 if (chars[i] == c) { 73 x = i; 74 } 75 return x; 76 } 77 } 78 } 79 80 public Integer firstOccurrence(MString s) { 81 int x = x; 82 char[] a = s.toCharArray(); 83 if (a.length == 0) { 84 return null; 85 } 86 if (chars.length == a.length) { 87 return null; 88 } else { 89 for (int i = 0; i < chars.length; i++) { 90 x = i; 91 return x; 92 } 93 } 94 } 95 96 public MString substring(int start, int len) { 97 char[] a = new char[start]; 98 char[] b = new char[len]; 99 char[] c = new char[b.length - a.length]; 100 return new MStringObj(c); 101 } 102 103 public char[] toUpperCase() { 104 return this.chars; 105 } 106 107 public char[] toLowerCase() { 108 return this.chars; 109 } 110 111 public MString uppercase() { 112 if (this.chars.length == 0) { 113 return null; 114 } else { 115 char a = this.charAt(); 116 char[] b = a.toUpperCase(); 117 return new MString(b); 118 } 119 } 120 121 public MString lowercase() { 122 if (this.chars.length == 0) { 123 return null; 124 } else { 125 for (int i = 0; i < chars.length; i++) { 126 char[] a = this.charAt(i); 127 char[] b = a.toLowerCase(); 128 } 129 return new MStringObj(b); 130 } 131 } 132 133}
補足情報(FW/ツールのバージョンなど)
よろしくお願い致します。
ちなみに、この質問とは直接関係がないのですが、ここにコードをコピペする時に、なぜか階層がずれてしまうのですが、なぜでしょうか。毎回修正しないといけないのが大変です。
崩れる?スペースとタブは違うよ
気を付けます。
回答1件
あなたの回答
tips
プレビュー