前提・実現したいこと
MStringObj の #trim を実装したいのですが、以下のエラーが発生します。空白があることを表したいのですが、うまくいきません。ちなみに、 "" でもやってみたのですが、だめでした。
発生している問題・エラーメッセージ
MStringObj.java:164: エラー: 二項演算子'=='のオペランド型が不正です } else if (chars[1] == null){ ^ 最初の型: char 2番目の型: <null> エラー1個
該当のソースコード(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 if (chars.length == 0) { 61 return null; 62 } else { 63 char[] a = find.toCharArray(); 64 char[] b = replace.toCharArray(); 65 char[] c = new char[this.chars.length - a.length + b.length]; 66 return new MStringObj(c); 67 } 68 } 69 70 public Integer firstOccurrence(char c) { 71 int x = x; 72 if (this.contains(c) == false) { 73 return null; 74 } else { 75 for (int i = 0; i < chars.length; i++) { 76 if (chars[i] == c) { 77 x = i; 78 } 79 return x; 80 } 81 } 82 } 83 84 public Integer firstOccurrence(MString s) { 85 int x = x; 86 char[] a = s.toCharArray(); 87 if (a.length == 0) { 88 return null; 89 } 90 if (chars.length == a.length) { 91 return null; 92 } else { 93 for (int i = 0; i < chars.length; i++) { 94 x = i; 95 return x; 96 } 97 } 98 } 99 100 public MString substring(int start, int len) { 101 if (chars.length == 0) { 102 return null; 103 } else { 104 char[] a = new char[start]; 105 char[] b = new char[len]; 106 char[] c = new char[b.length - a.length]; 107 return new MStringObj(c); 108 } 109 } 110 111 public char[] toUpperCase() { 112 return this.chars; 113 } 114 115 public char[] toLowerCase() { 116 return this.chars; 117 } 118 119 public MString uppercase() { 120 if (this.chars.length == 0) { 121 return null; 122 } else { 123 return new MStringObj(this.toUpperCase()); 124 } 125 } 126 127 public MString lowercase() { 128 if (this.chars.length == 0) { 129 return null; 130 } else { 131 return new MStringObj(this.toLowerCase()); 132 } 133 } 134 135 public MString truncate(int n) { 136 if (chars.length <= n) { 137 return null; 138 } else { 139 char[] a = new char[n]; 140 return new MStringObj(a); 141 } 142 } 143 144 public boolean palindrome() { 145 if (chars.length == 0) { 146 return false; 147 } else { 148 int a = 0; 149 int b = chars.length - 1; 150 while (a < b) { 151 return false; 152 } 153 a++; 154 b--; 155 } 156 return true; 157 } 158 159 public MString trim() { 160 char[] a = new char[1]; 161 char[] b = new char[chars.length - 1]; 162 if (chars.length == 0) { 163 return null; 164 } else if (chars[1] == null){ 165 char[] c = new char[chars.length - a.length]; 166 return new MStringObj(c); 167 } else { 168 char[] d = new char[chars.length - b.length]; 169 return new MStringObj(d); 170 } 171 } 172 173 public MString collapse() { 174 char[] a = new char[1]; 175 char[] b = new char[chars.length - 1]; 176 if (chars.length == 0) { 177 return null; 178 } else { 179 char[] c = new char[chars.length - a.length -b.length]; 180 return new MStringObj(c); 181 } 182 } 183 184}
補足情報(FW/ツールのバージョンなど)
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー