🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

Q&A

4回答

4747閲覧

Stirng型からint型への変換で躓きました

退会済みユーザー

退会済みユーザー

総合スコア0

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

0グッド

0クリップ

投稿2021/02/26 01:06

編集2021/02/26 01:23

前提・実現したいこと

掲題の通り、String型 → int型へ変換しようと思っています。
いろいろとググれば出てきますが、やりたいこととは一致していないので質問させていただきます。

やりたいこととしては、JSP/サーブレットの一環で入力された文字を数値に変換する、ということですが
例えば「りんご」と入力されれば「0」、「いちご」と入力されれば「1」、それ以外はnullを返します

どうしてもうまくいかないので解決方法を教えてください

発生している問題・エラーメッセージ

非互換オペランド型 int型とString型

とエラーメッセージが表示され実行できない状態です。

該当のソースコード

(略) String food = request.getParameter("Food"); int foodnum = Integer.parseInt(food); if (foodnum == "りんご") { food = 0; } else if(foodnum == "いちご") { food = 1; } else { food = (Integer) null;  //food = null;にしたかったけどint型をnullにできないためこのように記載 }

補足情報(FW/ツールのバージョンなど)

Eclipse IDE 4.14.0

追記) int food をint foodnum に修正しました

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

K_3578

2021/02/26 01:18 編集

>いろいろとググれば出てきますが、やりたいこととは一致していないので・・・ ならば、どういうキーワードでググってどういう記事を見たのか追記して頂けますか? 追記:質問とは関係ありませんが、以前の質問は解決したのでしょうか?
dodox86

2021/02/26 01:24

コンパイルエラーに関する問題、質問を除き、コンパイルエラーが無いソースコードで質問をするのは最低条件です。
dodox86

2021/02/26 03:08

そして退会。
K_3578

2021/02/26 03:33

あら、退会されてしまったのか・・・残念だ
guest

回答4

0

まず、そもそも同名の変数は定義できません。

java

1String paramFood = request.getParameter("Food"); 2Integer food = null; 3 4if ("りんご".equals(paramFood)) { 5 food = 0; 6} else if("いちご".equals(paramFood)) { 7 food = 1; 8}

投稿2021/02/26 01:15

momon-ga

総合スコア4826

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

momon-ga

2021/02/26 01:23

ソースが変更された・・・が、 > foodnum = (Integer) null; 元のコードでもそうですが、 int 型の変数にnullいれようとするとコンパイルは通りますが、実行時に例外が発生します。
guest

0

  • 上部でString foodint foodという、同名の変数を宣言してしまっているため、これではコンパイルを通りません。
  • "りんご""いちご"Integer.parseIntにかけたところで、意味のある値を返しません。
  • food == "りんご"のように、文字列を==で比較するのは適切ではありません。"りんご".equals(food)のようにequalsメソッドを使いましょう。

投稿2021/02/26 01:13

maisumakun

総合スコア145963

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2021/02/26 01:28

> 非互換オペランド型 int型とString型 エラーメッセージの通りです。intのfoodnumと"りんご"や"いちご"は、比較演算自体が成立しません。 (すでに上で触れたように、Integer.parseInt("りんご")とすること自体が妥当ではありません)
guest

0

  1. 変数名が重複している

変数foodが2つ宣言されています。
型違いであっても同じ変数名を宣言することは出来ません。
(普通に人間が見てもどっちの型のfoodだかわからない)

  1. 文字列の比較方法がおかしい

文字列が等しいかを確認する
https://java-code.jp/183
String(Java 11)

nullを返したいなら最初からInteger型使って
Optionalで返せばいいのではないでしょうか。

投稿2021/02/26 01:21

Luice

総合スコア771

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

そもそもfoodという変数名がStringとintで被ってしまっていますし、

Java

1int food = Integer.parseInt(food);

の(food)には数字(数値ではなく数字、つまり数字の文字列)が格納されていないとダメです。
なので変更するならば、int型の変数名をfood_number等に変え、Integer.parseInt(food);は消すと動くと思います。

投稿2021/02/26 01:17

PJwnOI

総合スコア39

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問