[解決済み] 文字を大文字にしたり小文字にしたりする際に「定数式が必要です」というエラーが発生する。
2022-02-07 18:38:55
質問内容
このメソッドは、特定のタイプのString(例えば、YまたはN(ただし、常にYおよびNではない))に対して真または偽を返します。このメソッドは、文字の大文字小文字を無視し、それがYであれば真、Nであれば偽を返さなければなりません。 YまたはNを満たさない場合、ユーザーに有効な値(つまりYまたはN)を入力するよう促し、その同じメソッドの内部を呼び出します。 しかし、そのメソッド内で値と2つのオプションを渡すと、"Constant expression required"エラーが表示されます。
YとNをパラメータとして渡すのではなく、定数値を使ってみた - うまくいった しかし、いつもYとNではなく、MaleやFemaleの可能性もあるので、このコードブロックを再利用できるようにするために、次の方法を試しています。
boolean boolHatchedBack = validation.checkTrueFalse(hatchedBack,"N","Y");
boolean boolAC =validation.checkTrueFalse(ac,"Male","Female");
public boolean checkTrueFalse(String value,String opt1,String opt2){
while (true){
switch (value) {
case opt1.toLowerCase():
case opt1.toUpperCase():
return false;
case opt2.toLowerCase():
case opt2.toUpperCase():
return true;
default:
System.out.print("Invalid Value, Please re-enter(Y/N) : ");
String val = input.nextLine();
checkTrueFalse(val,opt1,opt2);
}
}
}
期待される結果は、main メソッドに true または false のブール値を返すことです。
どのように解決するのですか?
Switchのcase文は、コンパイル時に評価可能な値である必要があります。 opt1.toLowerCase()は、実行時にのみ評価される値です。
そのため、"constant-expression-required" というエラーが発生します。 あなたのユースケースでは、if文を使用する必要があります。
関連
-
[解決済み】javaで指定されたファイルが見つからない
-
[解決済み】不正なエスケープ文字"㊧"について
-
[解決済み】Doubleはdereferencedできない?
-
[解決済み】Eclipseで「公開型 <<classname>> は独自のファイルで定義する必要があります」エラー【重複あり
-
[解決済み】java.io.IOException: 壊れたパイプ
-
[解決済み】Javaで文字列をコピーするにはどうしたらいいですか?
-
[解決済み] テスト
-
[解決済み] SQLエラー。0, SQLState: 08S01 通信リンクの失敗 [重複]。
-
[解決済み] "java.nio.charset.MalformedInputException" を避けるために、すべての包括的なCharset。入力の長さ= 1"?
-
[解決済み】Javaのswitch文。定数式が必要だが、定数である
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] java.sql.SQLException: ユーザー 'root'@'localhost' (using password: YES) のためのアクセスが拒否されました。
-
[解決済み】代入の左手は必ず変数 CharAt
-
[解決済み】エラー。Selection does not contain a main type
-
[解決済み】「'void' type not allowed here」エラーの原因とは?
-
[解決済み] メソッドがそのスーパークラスのメソッドをオーバーライドしない
-
[解決済み】デフォルトのキーストアファイルが存在しない?
-
[解決済み】文字列中の � を置換する方法
-
[解決済み】Eclipseで「JUnitテストが見つかりませんでした。
-
[解決済み】ソースルート外のJavaファイル intelliJ
-
[解決済み] Hide Utility Class Constructor : ユーティリティクラスはパブリックまたはデフォルトコンストラクタを持つべきではありません。