Javaで文字列として*を認識させる方法

このQ&Aのポイント
  • Javaのプログラミングにおいて、テキストファイルから*を含む文字列を読み込む際に、*を文字列として認識させる方法について質問です。
  • 現在、whileループを使用して文字列を1文字ずつ読み込み、*が出現するまで配列に格納しようとしています。
  • しかし、!= *という条件で*を文字列として認識させることができず、エラーが発生しています。*を文字列として認識させる方法があれば教えていただきたいです。
回答を見る
  • ベストアンサー

JAVAで*を文字列ととして認知させたい

Javaのプログラミングで質問です。 AAAA*BBBBBB*CCCCCC・・・ AAA*BB*CCCC というテキストファイルを読み込むときに、 AAAAを配列1、BBBBBBを配列2にCCCを配列3に入れる、 ということをしようと考えています。 「*があらわれるまで一文字ずつ読んで配列に入れる」 ということをしようとしてwhileでまわそうとしているのですが、whileの条件のところで、 String line; while (line = reader.read() != *) { としてみたのですが、!= *の部分が無効だと言われてしまいました。*を文字列として認識させる方法があれば教えていただけないでしょうか? もし駄目なら駄目で、その他の方法を一から考えようと思いますので「無理だよ」ということだけ教えていただけるとありがたいです。よろしくお願いします。

  • fuyu
  • お礼率69% (145/210)
  • Java
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • ranx
  • ベストアンサー率24% (357/1463)
回答No.2

失礼!判定条件が逆でしたね。 while (!(line = reader.read()).equals("*")){ ですね。

fuyu
質問者

お礼

回答ありがとうございました。 今回は、お礼が遅くなり申し訳ありません。 おかげさまで解決しました。 ありがとうございました。

その他の回答 (1)

  • ranx
  • ベストアンサー率24% (357/1463)
回答No.1

ダブルクォートで囲んで "*" とすれば文字列として認識されます。 なお、文字列の比較はequals()メソッドを使います。 ご質問のケースでは、 while ((line = reader.read()).equals("*")){ とすべきです。

関連するQ&A

  • Perl言語でファイル入出力プログラムについて

    Perlでファイル入出力のプログラムをコーディングしたいのですが、いまいちハッシュが理解しずらく困っています。わかる方よろしくお願いします。 moto.pl の中にあらかじめ AAA aaa AaAa AAaa BBB bbb BbBb BBbb CCC ccc CcCc CCcc AAA aaa AaAa AAaa .... というように一行ずつ文字列があり、この場合では最初の大文字AAAが二つあるので、その結果を例えばsaki.plに AAA 2 ... というように出力するプログラムを教えて頂けませんか?

    • ベストアンサー
    • Perl
  • 文字列の一致について

    URLのデータベースがあるとします。 例えば http://hogehoge.com/aaaa/ http://hogehoge.com/aaa/ http://hogehoge.com/bbb/ http://hogehoge.com/ccc/ URLにある文字列が含まれていたら、○○を表示すると言う処理をしたいと思っています。 例えばURLに「aaa」の文字列を含まれている時、「あああ」を表示しようとすると、最初に登録されている「http://hogehoge.com/aaaa/」に該当してしまいます。 「aaa」であれば、http://hogehoge.com/aaa/に該当して、「あああ」を表示させるようにできないでしょうか? 要するにURLに「aaa」が含まれていたら、「http://hogehoge.com/aaaa/」ではなく、「http://hogehoge.com/aaa/」に該当して、「あああ」を表示させる。 今は $url =~ /aaa/ のように「=~」を使用しています。 $url =~ /\/aaa\// のようにするしかないでしょうか。 アドバイスを御願いします。

    • ベストアンサー
    • Perl
  • strcmp関数などでの複数の文字列の比較

    以下の例はランダムなiの値で文字列にアクセスして その文字列がどの文字列であるかを判定しているプログラムです。 char *string[] = {   "aaa",   "bbb",   "ccc", } ; int i = rand() % 3; if ( strcmp( string[ i ], "aaa" ) == 0 ) {   printf("aaaです"); } if ( strcmp( string[ i ], "bbb" ) == 0 ) {   printf("bbbです"); } if ( strcmp( string[ i ], "ccc" ) == 0 ) {   printf("cccです"); } するとこのようにif文の羅列になってしまいます。 (strstr関数を使う場合などでも同じような感じです。) 複数の文字列を判定する場合などにもっと良い手法は無いでしょうか?

  • 文字列を改行で区切り配列に格納したい

    データをプログラムに明記し、プログラムで いろいろ加工したり処理をしたい場合ですが、 例えば、 Dim hairetu(10) As String hairetu(0) = "aaa" hairetu(1) = "bbb" hairetu(2) = "ccc" 途中省略 hairetu(10) = "zzz" これをイメージとして以下のように行う方法はありますでしょうか あくまでもイメージとしてです。 Dim mojiretu As String Dim hairetu(10) As String mojiretu="aaa\nbbb\nccc\n途中省略zzz" ← hairetu=mojiretuを”\n”で区切り順次配列に格納する ←は、mojiretu="aaa bbb ccc 省略 zzz"  のようなイメージです。 よろしくお願いします

  • 特定のフィールドの文字列を取得

    初心者ですがよろしくお願い致します。 □わからない事 ・特定のフィールドの文字列を取得 ・取得した文字列を配列に格納 □条件 ・mysqlにはすでにデータが登録済み ・PHPより操作 □具体例 フィールド名(hogehoge)に文字列が入っています。 AAAAAA(10000レコード) BBBBBB(5000レコード) CCCCCC(3000レコード) DDDDDD(1000レコード) ・・・・・・(・・・・レコード) 重複が多数ありますが、重複しない文字列だけを取り出して配列に格納したいと思っていますが、うまいやり方がわかりません。 どなたか教えて頂けませんか? よろしくお願い致します。

    • ベストアンサー
    • MySQL
  • セル内の数字も混じった文字列から特定パターンの数字列を取り出す

    またまたお世話になります。  (1)セル内に1つまたは2つのハイフンでつながる数字列を含む文字列(ブランクも含みます)がある場合にそこからその数字列のみを取り出す方法をアドバイス願います。  例 cを文字、xを数字(最大7桁)とします。 セル内の文字列 cccccc cccc cccc xxxxxxx-xx-x ccccccc cccc cccc からxxxxxxx-xx-x を取り出して文字列として別のセルに置く方法です。 (2) もしこのxxxxxxx-xx-x が[ と ] で囲まれていた場合はもう少し容易になりますか?  よろしくお願いします。  

  • 文字列を配列定義に使用するには

    文字列を配列の定義に使用したいのですが、可能でしょうか? 具体的には以下のような内容です。  $AAA = array("name"=>"山田","val"=>"10"); とすると変数$AAAは配列になります。  $BBB = 'array("name"=>"佐藤","val"=>"20")'; とすると変数$BBBは文字列になります。  $CCC = $BBB; と変数$CCCに代入した場合に、 変数$CCCを配列として認識させたいです。 つまり  print $CCC[name]; //佐藤  print $CCC[val]; //20 というように出力させたいのですが、 根本的に可能なのでしょうか…? よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 複数行にわたる処理

    こんばんは。perl初心者です。 どうしてもわからないので、どうかアドバイスよろしくお願いします。 一つのファイルに、以下のような3行で一組の塊がある場合、 <line_a>: aaaaaa <line_b>: BBBBBB <line_c>: cccccc <line_a>: aaaaaa <line_b>: bbbbbb <line_c>: cccccc ... <line_b>の行に文字列"BBBBBB"が含まれていたら、<line_a>の内容を"aaaaaa"から"AAAAAA"に置換してファイルを上書きしたいのですが、 どうやったらいいのでしょうか・・・。

    • ベストアンサー
    • Perl
  • 元の文字列をそのまま使う置換方法を教えてください。

    perlの置換で『aaa』の文字列にマッチする行を置換するにはどうしたらよいでしょうか。 宜しくお願いします。 1.『aaa』にマッチする 1111*aaa2222 2.『aaa』にマッチしない 1111*aaa\2222  1111*aaa_2222   1111,2222には数字や英文字が入ります。 また1.を置換するときに 1111*aaa2222cccc と元の文字列をそのまま使い『ccc』を追加する場合は 置換先はどのように書けばよいでしょうか。 現在正規表現を勉強中で、簡単なことでしたら申し訳ありません。 ヒントでもかまいませんので是非お教え願います。

    • ベストアンサー
    • Perl
  • Java ストリームでの文字列の扱いについて

    Javaのストリームを勉強している際に、下記のサンプルソースを見ました。 (ユーザが入力した内容を、1文字ずつそのまま画面に返すプログラムです。) 疑問点があるので教えて下さい。 ===== import java.io.*;  public class Sample{   public static void main(String args[]){   int b;   try{    while((b = System.in.read()) != -1){    System.out.print((char)b); 以下省略 ====== ■疑問箇所1. while((b = System.in.read()) != -1) とありますが、 (1)ユーザが入力した文字(整数ではない)が、何故、int型の変数に代入出来るのでしょうか? (2)read()メソッドはint型の戻り値を持つようですが、EOFの"-1"以外の時は、  どんな数値が返されているのでしょうか?  (read()メソッドは、1文字読み込んで、戻り値でその文字をUnicodeにエンコードした値を返しているとか?) ■疑問箇所2. System.out.print((char)b); とありますが、変数bには数値が入っていると考えられます。 これは、変数bの整数が、(char)でキャストされる事によって、 再び、文字に「変換」されているのでしょうか? 以上、教えて下さい。

    • ベストアンサー
    • Java