Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

Stringにしたいのにbooleanにしろというエラーが出てしまう

Eclipseにてjspを書いているんですが、

「データベースから一文字のアルファベットIDを持ってきて、それをString型に入れる
ifでそのStringと文字を比べて一致した文字に対応する数字を別のint型に入れる」
という処理を行いたいんですが、
if( string = "A")とした時点で、
「String から boolean には変換できません」
といったエラーになってしまいます。

途中を省いてソースを書きますが、


   (略)

String typeID = null;
int type = 0;

   (略)

while(rs.next()){
 typeID = rs.getString("分類"); ←ここでA〜Gまでの一文字が入ります

 if(typeID = "A"){
  type = 1;
 } else if(typeID = "B"){
  type = 2;

   (以下略)


少しわかり辛いかもしれませんがこのようになっています。
お力を拝借したいと思います。

8

回答

6305

閲覧

8件の回答

評価

0

string.equals("A")もしくは"A".equals(string)
equalsIgnoreCaseを使ってもいい。

Javaの基礎なので、基礎からやり直したほうがいいでしょう。

評価

0

直接の回答じゃないけど・・・

if(typeID = "A"){
じゃなく
if(typeID == "A"){
じゃない?

評価

0

VBじゃないんだから。
文法読んだら?

それと、文字列の評価は、equals() 使った方がいい。

最低限、質問の前に、
(1) extends , interface, implements, public,
    private, protected 等のクラス作成に関わる
    キーワードは理解出来ていなくても良い。

(2) 基本データ型、条件式、ループ、関数の作り方
等の基本文法は理解できていることが望ましい。


と思うよ。
君の質問は、
VBから入った人が必ずする質問ベスト3に入る奴だよ。
"=" と "==" の違い
VB なら "A" = "a" で済むのに、なぜJavaでは、
"A" == "a" じゃなくて、"A".equals("a") なのか?

とかね。
とりあえず、文法HPで基本だけでも押さえよう。

評価

0

エラーになる理由、回避方法は他の方々がおっしゃっているので、「String から boolean には変換できません」になる理由を。
if()の括弧の中はboolean値でなければいけません。
しかし、無酢さんのコードでは仙道ありすさん、あさんがおっしゃっているようにif()の括弧の中が代入になっています。
if()は中に入っているものがbooleanでなければならないので、Stringの値が入った変数をbooleanに型変換しようとします。しかし、Javaではこの型変換は認められていません。

このため、「String から boolean には変換できません」というエラーになります。

ながなが書きましたが、もし「そんなん分かってるよ!!」ということでしたら申し訳ありません。

また、「この解釈間違ってるよ!」というご意見ございましたら教えていただけると助かります。

評価

0

まさに適当ですが、Stringの値が入った変数をbooleanに型変換しようとはしなかったんじゃないかな・・・

評価

0

検出値  : java.lang.String
期待値  : boolean
                return "-";
                       ^
たぶんこんなえらーのはずですが

> String から boolean には変換できません

はどこからでてきたのでしょうか?

boolean 型を期待したけど String型がきたよ。といっているだけですけどね。

> String から boolean には変換できません
変換はできます。ただしキャストではありません。
java.lang.Booleanのメソッドを見てみてください。

入力された文字が数値かのチェック方法

1.正規表現で数値以外のものが混在するかチェック
2.char型配列に変換して すべてが範囲内にあるかどうか
3.catch句で 数値変換例外を取得する

文字列というか オブジェクトの== は 同一のオブジェクトであるかどうかのチェックなので
UTF-8の"あ"とEUC-JPの"あ"で比較すると false になります。


javaの ver. によりFormatter系 クラスが使えない場合
浮動少数点数値には.がひとつしかないことを利用し
数値を文字列化し.を検索し検出されればその数値に2を加算し文字化浮動小数点数値からsubstringなどで切り出すのがいいでしょう。

評価

0

汗)下半分かくばしょまちがえた><

評価

0

「String から boolean には変換できません」
はEclipseが出す警告(エラー?)ですね。

私も書き方が悪かったと思います。
「型変換」ではなく「暗黙の型変換」でしたね。
失礼致しました。

#適当さん、杏さん、これで説明として合っていますか?

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。