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番目に に が見つかりました」と出るのはなぜですか?
No.4ベストアンサー
- 回答日時:
charAtメソッドは、indexOfで使用する検索した文字を明確にするための整形処理だったのだと考えられます。
String str2 = br.readLine();
この処理では、複数の文字列を格納することができ、
int num = str1.indexOf(str2);
とした場合、文字列「にちは」や、「ばんは」がかんがえられます。と一致した箇所を返す、というプログラムになります。
この実装例の場合、「こんにちは」と「にちは」を比較して、最初に出現した位置を返すようになります。
では、ご質問のプログラムの場合、何かしらの意図があって、最初に入力された文字のみを検索の対象としたかったのだろうと推察します。
この場合、charAt(0)によって、文字列から最初の文字だけを抜き出すことが必要になります。
回答はプログラムから読み解ける部分にとどめます。
No.3
- 回答日時:
回答要旨 検索対象はcharAt(0)でもchでも、str2でもありません。
str1です。詳細
str1:検索対象の文字列
str2:検索したい文字をキーボード型受け付けるための一時一時変数
ご質問にはstr2に「こ」「に」、str1に「こんにちは」と代入されているものとして回答します。
String str2 = br.readLine();
上記の処理はキーボードから入力を受け付ける処理と考えてください(例えば、です)
char ch = str2.charAt(0);
上記の処理は入力から最初の一文字だけを取り出します(後に何が入力しても無視します。改行文字も無視します)
次に、 int num = str1.indexOf(ch); を考えます。文字列str1に対してはじめに文字chが出てくるのは何番目か?を検索しています。文字と位置の関係は貴見の通り、以下の関係になります。「こ」は0、「に」は2です。
こんにちわ
0 1 2 3 4
プログラムの出力においては+1するため、
こんにちはの1番目に「こ」が見つかりました。
こんにちはの3番目に「に」が見つかりました。
と出力されます。
indexOf()で、文字を探し出します。以下の関係であることは貴見の通りです。
この回答への補足
何度もすいません。
テキストの出力結果は
文字列を入力してください。
こんにちは
検索文字を入力してください。
に
こんにちはの3番目に「に」がみつかりました。
となっていて、
hirotn さんがおっしゃっている
>こんにちはの1番目に「こ」が見つかりました。
>と出力されます。
の部分はありません。そこで再度質問のスタートラインに戻りますがなぜあえて、
char ch = str2.charAt(0);
が必要なのか(なぜがcharAtで縛るのか)が解らないのです。
No.2
- 回答日時:
str1が「こんにちは」だとします。
str2は、検索文字列を求めていますが、実際に検索に使用するのは、
char ch = str2.charAt(0);
となっていますので、
’に’と入力された場合、「3番目に に が見つかりました」となります。
この回答への補足
>実際に検索に使用するのは、
>char ch = str2.charAt(0);
>となっていますので、
検索に使用するのはindex文じゃないですか?
それとこれはNo.1の方にもお聞きしましたが、
でも(0)と指定しているので
0 1 2 3 4
こ ん に ち は
0番目は「こ」なんで、「こ」しか取り出せないのではないですか?
No.1
- 回答日時:
「3番目に に が見つかりました」と出力されている部分は、どこでしょう?
そこで使われている変数はどんなものがあるでしょうか?
その変数の値は、どこで設定されているでしょうか?
str2.charAt(0); は、str2の0番目(=1文字目)の文字です。
では、str2は何が入っている変数でしょうか?
ゆっくりと、コンピュータになったつもりで、プログラムの処理を追ってください。
この回答への補足
>「3番目に に が見つかりました」と出力されている部分 >は、どこでしょう?
System.out.println(str1 + "の" + (num+1)
+ "番目に「" + ch + "」が見つかりました。");
の部分だけでしたね、すいません。追加質問ですが、
String str2 = br.readLine();
char ch = str2.charAt(0);
のコードの部分はお飾りですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Ruby vscode 文字化け 1 2022/05/21 19:17
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# C++プログラミングコードにポリモーフィズムを取り入れ方を教えてください。 2 2023/06/09 11:17
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# C++のcinの動作 5 2023/02/26 00:13
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
入力文字列が数字かどうかの判別
-
以下のJAVAプログラムでご質問...
-
java.lang.NoClassDefFoundErro...
-
equalsの逆
-
Java初心者です。csvファイルの...
-
yyyymmddからyyyy/mm/d...
-
JavamailでGmailのお気に入りフ...
-
InputStream.read()でタイムア...
-
javaでCSVの中身から最大値を表...
-
JSPからパラメータを取得してサ...
-
Javaの質問です。テキストファ...
-
java シンボルが見つかりません
-
ファイル読み込みで
-
Java int sum = 0は必要ですか?
-
java連結
-
Log4jで機能毎に別ファイルへ出...
-
このプログラミング誰か教えて...
-
C言語のポインターに関する警告
-
Javaで改行などが出来ないのです。
-
flush()とclose()について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
yyyymmddからyyyy/mm/d...
-
equalsの逆
-
csv出力について
-
九九を横に表示する。
-
InputStream.read()でタイムア...
-
テキストファイルから空白行をよむ
-
Java int sum = 0は必要ですか?
-
javaのfor文が機能してないみた...
-
BufferedReaderでのエラー
-
Javaの質問です。テキストファ...
-
以下のJAVAプログラムでご質問...
-
Class.forNameでエラーになる
-
ソケットを使ったサーバとクラ...
-
テキストファイルにおいて任意...
-
テキストファイルの任意の文字...
-
JAVAでエラーがでる。
-
Inputstreamについて
-
ObjectInputStreamとStreamCorr...
-
Windowsでの標準入力の終了の仕方
-
[JAVA]エラーが解決できません。
おすすめ情報