以下のようなソースを書きました。
するとEclipseが「演算子<は引数の型int,Stringで未定義です」というエラーを出します。
エラーになる箇所は、下の方のループのroadInfoPo[5]を条件式にしている部分と、roadInfoPo[pointer+1]を条件指定としている部分です。
ループの評価をする条件式に、配列が指定できないとは考えにくいのですが。
私はまだまだJava初心者PGです。
おまえけに一人で作業をしており、周囲にJavaが分かる人もいません。
どうしたら解消できるのか、どなたか教えてくださいませm(__)m
よろしくお願い致しますm(__)m
roadInfoCountはint型です。
roadInfoValuesは長い文字列のString型です。
for (int j=1; j<=roadInfoCount; j++) {
String[] roadInfoPo = roadInfoValues[j].split(",");
//<re>
Element re = document.createElement("re");
re.setAttribute("tp", roadInfoPo[0]);
re.setAttribute("dv", roadInfoPo[1]);
re.setAttribute("tt", roadInfoPo[2]);
re.setAttribute("ds", roadInfoPo[3]);
re.setAttribute("co", roadInfoPo[4]);
rt.appendChild(re);
//<sn>
Element sn=document.createElement("sn");
sn.appendChild(document.createTextNode(roadInfoPo[5]));
re.appendChild(sn);
int pointer = 6;
for (int k=0; k<roadInfoPo[5]; k++) {
String tp = roadInfoPo[pointer];
String pn = roadInfoPo[pointer+1];
for (int n=0; n<roadInfoPo[pointer+1]; n++) {
}
}
No.2ベストアンサー
- 回答日時:
エラーになっている、for文内の比較で、int と String を比較しているのでエラーになっています。
演算子 "<" で比較するには、int と int のように数値で比較しないとコンパイルエラーになります。
roadInfoPo[5] の中身が、たとえ "3" のような数字であったとしても、Java から見ると文字列なので、k の値と"<"で比較することは出来ません。
数値同士で比較するには、Integer.parseInt() といったメソッドを使って、文字列から数値(この場合はint型)へ変換してください。
この場合は、for文を
for (int k=0; k<Integer.parseInt(roadInfoPo[5]); k++)
のように書き換えます。
なお、もしroadInfoPo[5]の中身に数字以外のものがあり、数値へ変換できない場合は、NumberFormatException が発生します。
この回答への補足
回答ありがとうございます。
早速、書き直して見ます。
ご推察の通り、配列のこのインデックス番号の箇所には、常に数字が入るので、
それを条件にループをまわしたかったのです。
Javaがデータ型に凄く厳密であること。
肝に銘じて、頑張ってみます。
No.4
- 回答日時:
No.2の方がおっしゃったように、
Integer.paseInt();を使えばString型をint型に変換できます。
for (int k=0; k<Integer.paseInt(roadInfoPo[5]); k++)と指定してあげればきちんと評価できますが、もし配列の中に数字が入っていなかった場合、例外が発生します。
必ず、数字が入っている仕様だとは思いますが、もしも万が一入っていなかったら例外が発生しちゃうので、自分であれば、下記の様にするかもしれません。
int len = 0;//配列の条件の変数0で初期化
try{
//例外が発生する可能性があるのでtry~catchする
len = Integer.paseInt(roadInfoPo[5]);
}catch(NumberFormatException){
}
for (int k=0; k<len; k++){
・・・
こんな風にすれば、数字が入っていればその数字がint型に変換され、入っていなければ0になるのでエラー及び例外が出るのは避けられます。
※やり方はこの限りではないのでいろいろやってみてください。
この回答への補足
何度もありがとうございますm(__)m
おかげさまで先に進みました。
おっしゃる通り、確実に数字が入ります。
この数字が次の<タグ>~</タグ>のループ回数になるのですよ。
ありがとうございました。
不安な一人作業が、救われます。
No.3
- 回答日時:
int型のnとString型のroadInfoPoをそのまま比較することはできません。
おそらく文字列roadInfoPo[pointer+1]の長さと比較したいのだと思われるので、
roadInfoPo[pointer+1].lentgh()
と書き換えればいいと思います。roadInfoPo[5]も同様に。
length()の意味するところはAPIリファレンスでしっかり理解してくださいね。
この回答への補足
ご回答いただき、ありがとうございます。
データ型が異なるモノ同士を比較している意識がありませんでした。
ありがとうございました。
No.1
- 回答日時:
for (int k=0; k<roadInfoPo[5]; k++) とfor (int n=0; n<roadInfoPo[pointer+1]; n++) の部分でroadInfoPoの配列を k(n)< の後ろに指定していますが、コードを見るとroadInfoPoはString型のようです。
String型は<演算子で比較できません。for文の書き方は
for(初期処理,継続条件,継続処理)です。
ここで k < とn <の右側に来るのは当然int型でないと
なりません。
数字が文字列より小さければという条件は評価できませんよね。
どのような条件で繰り返し処理を行いたいのでしょうか?
この回答への補足
早速のご回答、本当にありがとうございます。
おっしゃる通りです。
自分の間違いはわかりました。
私がしたいこととゆーのは、
String型のこの配列のこのインデックスの場所には、
String型だけれど数字が入っていまして、
この数をループが回る条件にしたいのです。
もちろん配列の各要素値は、毎回変わります。
ループの条件式に設定する寸前でint型変数に一時的に代入するような形にすればいいのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
Java初級 引数に適用できません
Java
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JavaのBase64デコードで正しく...
-
java StringとString[]の違い
-
ArrayListを使った多次元配列の...
-
ORA-01858: 数値を指定する箇所...
-
Eclipseのコンソールを常に表示...
-
パソコンキーボードで時分秒を...
-
javaで電卓を作りたいのですが...
-
setPrefferedSizeとsetSize
-
1~100までの数字を表示したい
-
カタカナをローマジに変換する。
-
byte配列→float型の値を読みlon...
-
ColabでのPytorchのエラー
-
1~100までの数字を表示し、か...
-
テキストファイルから空白行をよむ
-
javaです。1月1日から日数入れ...
-
JButton-背景の透明化
-
VBAで配列の計算
-
VBAでEUC-JPのHTMLソースを取得...
-
NoSuchMethodErrorが解決できま...
-
Java配列でNullPointerExceptio...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【C#】ハッシュテーブル(連想...
-
Javaで文字と数字が混ざったも...
-
[Ljava.lang.Stringってなんですか
-
この警告はどうすれば?
-
main(String[] args) の args...
-
C言語でunsigned char配列を連...
-
配列で、値の入っている要素数...
-
C#で動的配列Listの中身をListB...
-
javaで大容量テキストファイル...
-
javaについて
-
javamailで複数人にメールを送...
-
java
-
ページング
-
同じ配列またはクラスを、2回...
-
動的配列確保
-
Javaで文字を漢字であるか否か...
-
csvファイルを2次元配列に格納
-
セッションを使ったint型の値の...
-
javaでEUC-JP文字列→UTF-8への変換
-
『args[]』とは?
おすすめ情報