• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:JAVAのプログラムについて)

JAVAのプログラムについて

TanakaShinyaの回答

  • ベストアンサー
回答No.1

switch で使用できるのは char,byte,short,int だけです。 String の charAt() などを使って、length() の分だけ char にして判定を行うとかでは代用できませんか? または、if 文を使って equals で全部調べるか…。 いかがでしょう? 案(1) for (int i = 0 ; i < s3.length() ; i++) { switch(s3.charAt(i)) { case '+': … break; case '-': … break; } } 案(2) if (s3.equals("+")) { … } else (s3.equals("-")) { … }

poposan
質問者

お礼

ありがとうございます。 大変助かりました。

関連するQ&A

  • JAVAの初心者です。

    import java.io.*; class Sample1 { public static void main(String args[])throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); do{ System.out.println("1:入力文字整数確かめ"); System.out.println("2:終了"); String hako = br.readLine(); int sen = Integer.parseInt(hako); switch (sen){ case 1: System.out.println("整数を入力してください。"); String hako2 = br.readLine(); int hako3 = Integer.parseInt(hako2); if ((hako3%2)==0){ System.out.println("これは偶数ですね。"); } System.out.println("奇数ですね。"); break; case 2: System.out.println("終了いたします。"); break; } }while(sen != 2); } } 上記のように組んだのですが、}whileのところでエラー が出てしまうのです。 これってなぜなのでしょう?? 初心者特有の質問かもしれませんがご教授いただけたら嬉しいです。宜しくお願いいたします。 関係ないのかも知れませんがJDK1-5-006を使用してます。

    • ベストアンサー
    • Java
  • javaじゃんけんゲーの質問

    このjavaじゃんけんゲームで 0を押すまでじゃんけんが続いて0押したら終了して、終了と表示して、じゃんけんの勝敗が表示されるように作りたいんですけどどうしたらいいですか?教えてください import java.io.*; class kadai6 { public static void main(String args[]) throws IOException { System.out.println("これは、じゃんけんゲームです。"); System.out.println("あなたの手を入力して下さい。(1:グー、2:チョキ、3:パー、0:終了)さぁどれにしますか?"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int res =Integer.parseInt(str); switch(res){ case 1: System.out.println("あなたの手はグーです。"); break; case 2: System.out.println("あなたの手はチョキです。"); break; case 3: System.out.println("あなたの手はパーです。"); break; default: System.out.println("あなたの入力した値はエラーです。1~3の値を入力してください。"); System.exit(1); break; } int comp = (int)(Math.random()*3) + 1; switch (comp){ case 1: System.out.println("コンピュータの手はグーです。"); break; case 2: System.out.println("コンピュータの手はチョキです。"); break; case 3: System.out.println("コンピュータの手はパーです。"); break; default: System.out.println ("エラーです。"); break; } switch (res -comp) { case -2: System.out.println("コンピュータの勝ちです。"); break; case -1: System.out.println ("あなたの勝ちです。"); break; case 0: System.out.println ("あいこです。"); break; case 1: System.out.println ("コンピュータの勝ちです。"); break; case 2: System.out.println("あなたの勝ちです。"); break; default: System.out.println ("エラーです。"); break; } } }

  • 実行するとよくわからないエラーがでる

    これを実行すると import java.lang.Integer; import java.lang.NumberFormatException; import java.lang.String; import java.lang.System; public class Animal { public static void main(String[] A00) { final int L00 = 6; int L01 = 0; int L02 = 0; int L03 = 0; if (A00.length < 3) { System.out.println("使用例 >java Animal 1969 6 26"); System.exit(1); } try { L01 = Integer.parseInt(A00[0]); L02 = Integer.parseInt(A00[1]); L03 = Integer.parseInt(A00[2]); } catch (NumberFormatException L04) { System.out.println("生年月日には数字を指定してください。"); System.exit(1); } int L05 = (L01 + L02 + L03) % L00; System.out.printf("%d年%d月%d日生まれのあなたは...%n", L01, L02, L03); switch (L05) { case 0: System.out.println("穏やかな心をもったヒツジです。"); break; case 1: System.out.println("おっとりマイペースのコアラです。"); break; case 2: System.out.println("自分が一番のライオンです。"); break; case 3: System.out.println("孤独が大好きなオオカミです。"); break; case 4: System.out.println("お調子者のサルです。"); break; case 5: default: System.out.println("不思議な性格のタスマニアンデビルで す。"); break; } } } # guarantee(_name_index != 0 && _signature_index != 0) failed: bad constant pool index for fieldDescriptor とエラーがでるのですが これはどういう意味でしょうか?

    • ベストアンサー
    • Java
  • JAVAの初心者です.

    import java.io.*; class Sample3 { public static void main(String args[])throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int meny; int max = 0; int kingaku[]; kingaku = new int[5]; char ss[][]; ss = new char[5][80]; do{ String hako = br.readLine(); meny = Integer.parseInt(hako); System.out.println("1:入力とその長さ"); System.out.println("2:データ入力"); System.out.println("3:データ表示"); System.out.println("4:おしまい"); switch(meny){ case 1: System.out.println("文字を入力してください。"); String input = br.readLine(); System.out.println(input + "は" + input.length + "文字です。"); break; case 2: if (max == 0){ System.out.printin("登録をしてからお選びください。"); }else{ System.out.println("名前を入力してください。"); String ss[max] = br.readLine(); System.out.println("金額を入力してください。"); String kingaku[max] = br.readLine(); System.out.println(ss[max] + "さんで" + kingaku[max] + "を登録します。"); max++; } break; case 3: System.out.println("現在登録人数は" + max + "人です。"); for(int aa = 0;aa<max;aa++){ System.out.println(name[max] + kingaku[max]); } break; } }while(meny != 4); } } 上記のソースなのですが、コンパイルで今のところ2つエラーが出てしまうのです。 String ss[max] = br.readLine(); String kingaku[max] = br.readLine(); の所がエラーと表示されます。 javaは入力した文字を表示するだけでしたら    = Integer.paruseint()する必要ないですよね?? 初心者ならではの質問でごめんなさい。 ご教授宜しくお願いいたします。

    • ベストアンサー
    • Java
  • java 会員登録プログラム

    2番目の参照で困ってます。Member.java といったクラスファイルを使ってます。コンストラクタやゲッター、セッター等が入ってます。省略箇所有りですがどうぞ宜しくお願いします。 public class MemberSystem { public static void main(String[] args) { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); try{ //loopを使い随時メニュー表示 boolean loop = true; while(loop){ System.out.println(""); System.out.println("ご希望のオプション番号を選択してください"); System.out.println("1>>登録 2>>参照 3>>検索 4>>削除 5>>保存 6>>読込 7>>終了"); String line = reader.readLine(); int n = Integer.parseInt(line); //ArrayList<Member>型のインスタンスを作成し、ArrayList<Member>型の変数rに代入 ArrayList<Member> r = new ArrayList<Member>(); switch (n) { case 1: System.out.println("登録>> 各情報を入力すると登録できます"); System.out.println("氏名"); String inputName = reader.readLine(); //エラーチェック 空入力 if(inputName.length() == 0){ System.out.println("空入力のため終了"); System.exit(0); } System.out.println("生年月日 例)2013/01/01"); String inputBirth = reader.readLine(); //エラーチェック 空入力 if(inputBirth.length() == 0){ System.out.println("空入力のため終了"); System.exit(0); } System.out.println("電話番号 例) 0901234567"); String inputTel = reader.readLine(); //エラーチェック 空入力 if(inputTel.length() == 0){ System.out.println("空入力のため終了"); System.exit(0); } //reader.redLineで取得したString型の情報を代入 r.add(new Member(inputName, inputBirth, inputTel)); System.out.println("下記、入力情報をストアし、会員ID番号を付加しました"); //入力情報と会員ID番号を表示 for(Member inputResult:r){ System.out.print(inputResult); } break; case 2: System.out.println("参照>> ご希望の会員情報を表示します"); System.out.println("会員ID番号を入力してください 例)0001"); //キーボード入力からデータを呼び込む String inputMemberID = reader.readLine(); //ここがうまくいきません。 for(Member inputResult :r) { if(inputMemberID.equals(inputResult.getID())){ //データ取得  System.out.println(inputResult); //エラーチェック 空入力 }else if(inputMemberID.length() == 0){ System.out.println("空入力のため終了"); System.exit(0); //エラーチェック 番号がない時や一致していない時 }else{ System.out.println("あなたの会員ID番号は該当しません"); System.exit(0); } } break; case 3: System.out.println("検索>> ご希望の会員を検索します 検索方法を番号で選択してください"); System.out.println("1>>氏名 2>>生年月日 3>>電話番号"); //switchを使い、検索選択肢を表示 String search = reader.readLine(); int x = Integer.parseInt(search); switch (x) { case 1: System.out.println("氏名"); String searchName = reader.readLine(); for(Member inName : r) { if (searchName.equals(inName.getName())){ System.out.print(inName); } } break; case 2: System.out.println("生年月日"); String searchBirth = reader.readLine(); break; default: System.out.println("電話番号"); String searchTel = reader.readLine(); break; } break; case 4: System.out.println("削除>> ご希望の会員を削除します"); System.out.println("会員ID番号を入力してください 例)0001"); String deleteMemeb

  • 現在学校のjavaの課題電卓を作っています

    import java.io.*; class dentaku { public static void main(String[] args)throws IOException { BufferedReader r = new BufferedReader(new InputStreamReader(System.in)); System.out.print("式を入力"); String input = r.readLine(); String sum[] = new String[input.length()]; String number = ""; int s = 0; int goukei =0; char enzan = ' '; for(int i=0; i < input.length(); i++) { //System.out.print(str[i]); //文字列から1文字ずつ抽出 char num = input.charAt(i); if(i == input.length()-1) { sum[s] = number; } else { if(num == '+' || num == '-'|| num == '*'|| num == '/') { //配列sumに代入 sum[s] = number; s++; sum[s] = String.valueOf(num); s++; } else { //変数numberにnumを代入 number = number + num; } } } for(int j=0; j<sum.length; j++) { if(sum[j] == null) { break; } if(j == 0) { goukei = Integer.parseInt(sum[j]); } else { if(sum[j].equals("+") || sum[j].equals("-")|| sum[j].equals("*")|| sum[j].equals("/")) { enzan = sum[j].charAt(0); } else { switch(enzan) { case '+': goukei += Integer.parseInt(sum[j]); break; case '-': goukei -= Integer.parseInt(sum[j]); break; case '*': goukei *= Integer.parseInt(sum[j]); break; case '/': goukei /= Integer.parseInt(sum[j]); break; } } } } System.out.print(goukei); } } までできたのですが 実行し 実際に 1+1+1とうってみると答えが23になってしまいます。 どのようにしたらいいのでしょうか

    • ベストアンサー
    • Java
  • javaファイルの質問!

    public class kazuate{ public static void main(String args[]){ int computer = (int)(Math.random()*100)+1; int player = 0; int count = 0; System.out.println("数当てゲーム(範囲は0~99)"); System.out.println("何回で当てられるかな?"); while(true){ count++; System.out.print("数字を入力してください"); player = Integer.parseInt(args[0]); if(computer > player){ System.out.println("小さいです。"); }else if(computer < player){ System.out.println("大きいです。"); }else if(computer == player){ System.out.println(count +"回目で当りです。"); break; } } } } コンパインしたら break文を使っているのに繰り返しがとまらず永遠に回答が流れてしまいます。なぜでしょうか?

  • どこに・・・

    import java.io.*; class janken { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.print("あなたの手を入力して下さい。(1:グー、2:チョキ、3:パー)?\n"); String str = br.readLine(); int a = Integer.parseInt(str); switch(a){ case 1: System.out.println("あなたの手はグーです。"); break; case 2: System.out.println("あなたの手はチョキです。"); break; case 3: System.out.println("あなたの手はパーです。"); break; default: System.out.println("1~3を入力してください。"); break; } { int ran = ((int)(Math.random()*3)+1); int b=ran; switch(b){ case 1: System.out.println("コンピュータの手はグーです。"); break; case 2: System.out.println("コンピュータの手はチョキです。"); break; case 3: System.out.println("コンピュータの手はパーです。"); break; } int c; c=a-b; if(c == 2){ System.out.println("勝ち"); } else if(c== -1){ System.out.println("勝ち"); } else if(c==0){ System.out.println("あいこ"); } else if(c==1){ System.out.println("負け"); } else { System.out.println("負け"); } } } } いまjavaの勉強をしており、練習をかてね上のようにじゃんけんのプログラムを書きました。今の段階で、一様動くのですが、一回ごとにじゃんけんが終了されてしまいます。そこで繰り返し文のwhile(a != x)を使って数値を入力したら終了するように考えているんですが、whileをどこに入れたらいいのかがわかりません・・・ 自分でいろんなところに入れて試して見たんですが、無限ループになったりして、終了してくれません。どこにwhileを入れたらいいのでしょうか?それてもwhileじゃないほうがいいのでしょうか?アドバイスお願いします。

    • ベストアンサー
    • Java
  • switch で疑問。java超初心者です。

    まず、 public class P1{   public static void main(String[] args){     int n = 1;       switch(n){         case 0:           System.out.println("あ");           break;         case 1:           System.out.println("い");           break;         case 2:           System.out.println("う");           break;         default:           System.out.println("え");       }   } } は、当然「い」と表示されますよね。 default: をcase 3:にしても、問題なく「い」と表示されました。 そこで、こんな風にしてみました。 public class P3{   public static void main(String[] args){     int n = 1;     String s;       switch(n){         case 0:           s="あ";           break;         case 1:           s="い";           break;         case 2:           s="う";           break;         default:           s="え";       }       System.out.println(s);   } } これは「い」と表示されましたが、 default: をcase 3:にすると、エラーとなってしまいます。なぜでしょう。 ちなみに、エラーの内容は 変数 s は初期化されていない可能性があります。     System.out.print(s);                ^ というものでした。 そこで、 変数 s を初期化してみようと、次のように変数 s の宣言の後に null を代入しました。 String s=null; すると、「い」と表示され、エラーは出ません。 なぜ、このようになるのでしょうか。 String型の変数を使っていて、今まではこのようなエラーは出た事が無かったのですが、 どうやらswitch文の中では、初期化しろ、と出てくるようです。 わかり易い解説をいただければと思います。 これは仕様だということで、この通り受け入れるしかないのでしょうか。 勉強していて、少々腑に落ちないので、質問致しました。 よろしくお願いいたします。

    • ベストアンサー
    • Java
  • Java for文

    for文について、キーボードで入力して、その数が素数(1またはその数以外で割り切れない数)であるかを判断するコードですが、for文とif文の関係が良くわかりません。ご教示ください。 <サンプル> public static void main(String[] args) throws IOException{ System.out.println("2以上の整数を入力してください。"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int num = Integer.parseInt(str); ※1 for(int i=2; i<=num; i++){ if(i == num){ System.out.println(num + "は素数です。"); ※2 }else if(num % i == 0){ System.out.println(num + "は素数ではありません。"); break; ※1と※2の処理について初心者でもわかるような解説をおねがいできますでしょうか? よろしくお願いいたします。