• ベストアンサー

equals()について

プログラミングの勉強をしています。 endと入力するとプログラムを終了すると言ったプログラムです。 以下のプログラムなのですが、 import java.io.*; class Ex58{ public static void main(String args[])throws IOException{ String s=""; String t = "end"; int number = 0; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); while(!s.equals(t)){ System.out.print(">"); s = br.readLine(); System.out.println("入力された文字列は" + s + "です。"); System.out.println((number+1) + "番目の文字は" + s.charAt(number) + "です。"); System.out.println((number+2) + "番目の文字は" + s.charAt(number+1) + "です。"); System.out.println("文字列の長さは" + s.length() + "です。"); } } } このプログラムの中で System.out.println((number+1) + "番目の文字は" + s.charAt(number) + "です。"); System.out.println((number+2) + "番目の文字は" + s.charAt(number+1) + "です。"); System.out.println("文字列の長さは" + s.length() + "です。"); を書き加えたところendが入力されても処理が終了しない プログラムになってしまいました。 どなたか助言をよろしくおねがいします。

noname#39315
noname#39315
  • Java
  • 回答数2
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • kztk
  • ベストアンサー率53% (59/110)
回答No.1

貼り付けてコンパイル・実行してみましたが、終了しますよ。 >end 入力された文字列はendです。 1番目の文字はeです。 2番目の文字はnです。 文字列の長さは3です。 endを入力したときの実行結果をそのまま貼り付けてもらえますか。

noname#39315
質問者

お礼

ご回答ありがとうございます。 Windowsでやっているのですがコマンドプロンプトにコマンドを入力せず 貼り付けて実行していたのですが、違うプログラムがコンパイルされていたみたいです。 ありがとうございました^^

その他の回答 (1)

  • neko_noko
  • ベストアンサー率45% (146/319)
回答No.2

1文字だけ入力するとエラーが出る、というところ以外は問題ないです。 >System.out.println("文字列の長さは" + s.length() + "です。"); >} >} ここを System.out.println("文字列の長さは" + s.length() + "です。"); } System.out.println("endが入力されたので終了します。"); } というように1文追加してから実行するのも、念のためお勧めします。 たぶん意味がないと思うけど…まあ、念のためです。 気を悪くしないで下さい。

noname#39315
質問者

お礼

neko_nokoさんに対してではなく 自分自身に気分が悪くなりました。 ありがとうございました^^

関連するQ&A

  • 三つの文字を順に並べるプログラム

    三つの文字を入力して、順番に並べて表示させるプログラムが作りたいのですが、どうしたらいいのかわかりません。 二つまではできました。以下に記します import java.io.*; class Sample { public static void main(String args[]) throws IOException { System.out.println("文字列1を入力してください。"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1=br.readLine(); System.out.println("文字列2を入力してください。"); String str2=br.readLine(); int s = 1,t = 0; if(str1.length()>str2.length()){ int len=str1.length(); StringBuffer sb=new StringBuffer(str1); while(s<len+1){ sb.insert(s,str2.charAt(t)); s=s+2; t++; } System.out.println("文字列は"+sb+"となる。"); }else{ int len=str2.length(); StringBuffer sb=new StringBuffer(str2); while(s<len+1){ sb.insert(s-1,str1.charAt(t)); s=s+2; t++; } System.out.println("文字列は"+sb+"となる。"); } } } str1に123 str2に45といった風に入力すると14253といった風になります。 これにstr3を加え、str3が6789ならば、146257389 となる風にしたいです。

    • ベストアンサー
    • Java
  • charAt(0)について

    import java.io.*; class Sample3 { public static void main(String[] args) throws IOException { System.out.println("文字列を入力してください。"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); System.out.println("検索文字を入力してください。"); String str2 = br.readLine(); char ch = str2.charAt(0); int num = str1.indexOf(ch); if(num != -1) System.out.println(str1 + "の" + (num+1) + "番目に「" + ch + "」が見つかりました。"); else System.out.println(str1 + "に「" + ch + "」はありません。"); } char ch = str2.charAt(0);の部分ですが、 charAt(0)というのは ( )に書かれている番号「のみ」を参照するんですよね? だからもし「こ」んちにはと入力しても0番目の「こ」しか出さないはずなのに、 「に」 を入れたらちゃんと「3番目に に が見つかりました」と出るのはなぜですか?

    • ベストアンサー
    • Java
  • コマンドプロンプトでひらがなの入力が出来ません。

    普段グーグル日本語入力を使っています。 OS XPsp2 import java.io.*; class Mojiretuate { public static void main(String[] args) throws IOException { String str = "こんにちは"; String str2; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("文字列当てゲームです。"); System.out.println("答えは何かのあいさつです。"); for(;;){ System.out.println("\n入力"); str2 = br.readLine(); System.out.println("入力文字列の長さ:" + str2.length()); if(str.equals(str2)){ System.out.println("正解です"); break; } else if(str2.length() > str.length()){ System.out.println("長すぎます。"); } else if(str2.length() == str.length()){ System.out.println("長さはあっています。"); } else{ System.out.println("短すぎます。"); } } System.out.println("終了"); } }

    • ベストアンサー
    • Java
  • Scanner と BufferedReader

    javaでキーボードからの入力を格納するやつがあって、 Scanner と BufferedReaderのやり方がありますが、これはどう違うのでしょうか? それとも全く同じでしょうか? たとえば、 ■一つ目 import java.io.*; class Sample3{ public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("文字列を入力してください"); String str1=br.readLine(); System.out.println("検索文字を入力してください"); String str2=br.readLine(); char ch=str2.charAt(0); int num=str1.indexOf(ch); if(num !=-1) System.out.println(str1+"の"+(num+1)+"番目に「"+ch+"」が見つかりました"); else System.out.println(str1+"に「"+ch+"」はありません"); } } ■二つ目 import java.util.Scanner; class Sample4{ public static void main(String[] args){ Scanner stdIn=new Scanner(System.in); System.out.println("文字列を入力してください"); String str1=stdIn.nextLine(); System.out.println("検索文字を入力してください"); String str2=stdIn.nextLine(); char ch=str2.charAt(0); int num=str1.indexOf(ch); if(num !=-1) System.out.println(str1+"の"+(num+1)+"番目に「"+ch+"」が見つかりました"); else System.out.println(str1+"に「"+ch+"」はありません"); } } これら2つは全く同じ実行結果が得られると思うのですが、 Scanner と BufferedReader の使い分けるべき場合などあるのでしょうか?

    • ベストアンサー
    • Java
  • java プログラミングについて

    独学でjavaに挑戦中ですが、書店で購入した本のソースプログラムを少し変えたいのですが、ご教授をお願いします。数当てゲームのプログラムで、一つの設問を正解すると終了するゲームですが、複数の設問を設定したいのです、質問がうまく伝わるか不安ですがよろしくお願いします、プログラムを少しだけ書いておきます。 import java.io.*; class Mojiretuate { public static void main(String[] args) throws IOException { String str = "こんにちは";  /*質問箇所*/ String str2; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("文字列当てゲームです。"); System.out.println("答えは何かのあいさつです。"); for(;;){ System.out.println("\n入力:"); str2 = br.readLine(); System.out.println("入力文字列の長さ:" + str2.length()); if(str.equals(str2)){ System.out.println("正解です!"); break; } 

    • ベストアンサー
    • Java
  • 文字列の比較について

    BufferedReaderでファイルを読んだのちに、見出しの文字列をカンマで分割して 文字列を比較しようとしています。 ですが、分割すると、文字列が別な文字コードによる表記に変わってしまいます。 なぜでしょうか? また、解決方法などのヒントなどあれば教えてください。 BufferedReader buffReader = new BufferedReader( new FileReader("/home/masa/Desktop/Sample.csv")); String s; int ini=0; int wamei=0; int i=0; while((s = buffReader.readLine())!= null){ String[] str = s.split(",", -1); //System.out.println(s); if (i == 0) { for(int j=0; j<str.length;j++){ System.out.println(String.toString(str)); if(str.equals("五十音")){ini = j;} System.out.println("五十音"+ini); if(str.equals("a")){wamei = j;} System.out.println("和名"+wamei); //System.out.println(j); } } i++;

    • ベストアンサー
    • Java
  • length()の使い方がわかりません

     java初心者です、宜しくお願いします。    lengthを配列につかってやるとlength()とするとエラーになります。  また、文字列ではlength()としないとエラーになります。  どこかこのプログラムが間違っているのでしょうか。   色々と参考書とかWEBで調べてもさっぱりわかりません。  どなたか宜しくご教示お願い致します。 ================================================================= public class H1 { public static void main(String[] args) { int d[] = {1,2}; String s = "abcd" ; System.out.println(d.length); System.out.println(s.length()); } }

    • ベストアンサー
    • Java
  • 小文字、大文字変換

    こんにちは。 javaの勉強をやっているのでですが 思うとおりに進みません。 一文字ずつ小文字なら大文字に大文字なら小文字に変換するといったものです。 途中経過です。 import java.io.*; class Ex60{ public static void main(String args[])throws IOException{ String str3 ="0"; String output = "0"; String s1 = new String("end"); while(str3.equals(s1) == false ){ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); while(str3.equals(s1) == false ){ System.out.print(">"); str3 = br.readLine(); if(str3.equals(s1) == true) break; for(int i=0; i<str3.length(); i++){ char c = str3.charAt(i); if(Character.isLowerCase(c)) output = str3.toUpperCase(); else if(Character.isUpperCase(c)) output= str3.toLowerCase(); } System.out.println("入力された文字列は" + str3 + "です。"); System.out.println("大文字小文字を変換すると" + output + "です。"); } } } } /* 実行結果 >abc 入力された文字列はabcです。 大文字小文字を変換するとABCです。 >AbC 入力された文字列はAbCです。 大文字小文字を変換するとabcです。 >AAb 入力された文字列はAAbです。 大文字小文字を変換するとAABです。 */ 条件として一文字が大文字か小文字の判定にはCharacterクラスの isLowerCase()メソッド、isUpperCase()メソッド 一文字の変換はtoUpperCase()メソッド、toLowerCaseメソッドを使います。 どなたかよろしくおねがいします。

  • 文字列を逆転させて表示するには

    Java超初心者です。 タイトルの通りJavaで文字列を逆転させたいのです(出力まで含む)。 文字列abcdefgをgfedcbaみたいな感じでです。 以下に自分が分かる範囲で書いてみました(分からない部分が多いので未完成です、すいません)。 //の部分のコメントアウトした箇所はJavaの方で元々逆転させる文法があるらしく、それを検索して書きました(今回は無視してください)。 しかしもっと基本的な文法を用いた方法が出来ないと駄目だと思い、今回はreverse等の既存の文法を使わず、繰り返しのfor文とchar型で文字を1つ1つ連結して文字列を逆転した形にしたい訳です。 私の作成した文は関係ない文があったり、おかしいところが多々あると思いますが、どうしたらよいか教えてください(実際以下のプログラムの出力結果が目標とかけ離れているのは承知してます、恥ずかしいですがあえて状況を把握して欲しいので載せます)。 よろしくお願いします。 public class hantai { public static void main(String[] args) { String str = "abcdefg"; int length = str.length(); System.out.println("length " + length); System.out.println("charAt(0)=" + str.charAt(0)); String value =""; for(int i = 0; i < str.length(); i++) { char c = str.charAt(i); value = value + c; System.out.println(value); //StringBuffer sbrev = new StringBuffer(str); //String strrev = sbrev.reverse().toString(); //System.out.println(strrev); } } } ホント、こんなレベルなんで暇なときにでも解答お願いします、ハハ・・・orz

    • ベストアンサー
    • Java
  • 文字列について

    適当な文字列をキーボードから入力し、次に別の適当な整数numをキーボードから入力する。次に先に入力した文字列のnum番目からnum個の文字だけ逆順になるように文字列を並び替えた文字列を新たな文字列変数に代入し、その結果を画面に出力するプログラムを下記で作成したのですが、文字列時代が逆になってしまいます。どうしたら、 結果    文字列を入力      My name is Taro Sandai.    整数を入力     10    My name isdnaS oraT になるのですか? import java.io.*; class mojiretu4 { public static void main(String args[]) throws IOException { System.out.println("文字列を入力"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); System.out.println("整数を入力"); String str2 = br.readLine(); int num = Integer.parseInt(str2); StringBuffer sb = new StringBuffer(str1); sb.reverse(); System.out.println(sb);

    • ベストアンサー
    • Java

専門家に質問してみよう