質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.45%
Java

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

Q&A

解決済

3回答

1650閲覧

NumberFormatExceptionが解決できません

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

0グッド

0クリップ

投稿2021/10/30 04:36

編集2021/10/30 09:45
bonusPictorialPatternString = new ArrayList<>(Arrays.asList("チェリー", "セブン", "スターバー", "ベル", "コイン", "おばけ")); int total = 0; for (String quantity : bonusPictorialPatternString ){ total += Integer.parseInt(quantity); } int random = (int) (Math.random() * total); int targetIndex = random; String goods = ""; System.out.println(fruitsPictorialPatternPic.get(targetIndex) + "|" + bonusPictorialPatternPic.get(targetIndex)); }

エラー
throw NumberFormatException.forInputString(s, radix);

解決
try{
String str = "Programmer Life";
int num = Integer.parseInt(str); //NumberFormatException
System.out.println(str);
}catch (NumberFormatException e){
System.out.println("数値に変換できません。");
}

文字列型のリストのindex番号を整数型に変換したらエラーが出て
解決のためにtrycatchをきさいしたのですができませんでした。
total += Integer.parseInt(quantity);
上記のように文字列のリストを変換はできないでしょうか?

修正
int total = 0;
for (int i = 0; i < fruitsPictorialPatternString.size(); i++) {
total += i;
}
へ変更

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

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

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

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

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

jimbe

2021/10/30 05:29 編集

m.ts10806 さんが回答で書かれていますように、何がどうなった結果何を得たいコードなのかさっぱり分かりません。 bonusPictorialPatternString を元に total は何を加算しているつもりなのでしょう。 最後の println では(例えば乱数 random が 2 になったとしたらとかで)何が表示されるつもりなのでしょうか。
退会済みユーザー

退会済みユーザー

2021/10/30 05:43

import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner; public class main { // public static void main(String[] args) { ArrayList<String> fruitsPictorialPatternString = new ArrayList<String>(); fruitsPictorialPatternString = new ArrayList<>(Arrays.asList("スイカ", "バナナ", "ブドウ", "ミカン", "イチゴ" , "パイナップル", "リンゴ", "トマト", "ピーチ", "かぼちゃ","チェリー", "セブン", "スターバー", "ベル", "コイン", "おばけ")); System.out.println(fruitsPictorialPatternString); ArrayList<String> fruitsPictorialPatternPic = new ArrayList<String>(); //文字列型のリスト、フルーツ絵柄で値を取得する fruitsPictorialPatternPic = new ArrayList<>(Arrays.asList("スイカ", "バナナ", "ブドウ", "ミカン", "イチゴ" , "パイナップル", "リンゴ", "トマト", "ピーチ", "かぼちゃ","チェリー", "セブン", "スターバー", "ベル", "コイン", "おばけ")); System.out.println(fruitsPictorialPatternString); System.out.println("メダルを入れて下さい。<所有メダル数 30枚>"); int numberOfMedalsOwned = 30; System.out.println(numberOfMedalsOwned); System.out.println("Press Enter."); Scanner scanner = new Scanner(System.in); scanner.nextLine(); int total = 0; for (String quantity : fruitsPictorialPatternPic){ total += Integer.parseInt(quantity); } int random = (int) (Math.random() * total); int targetIndex = random; String goods = ""; System.out.println(fruitsPictorialPatternPic.get(targetIndex) + "|" + bonusPictorialPatternPic.get(targetIndex)); } } すみません、まだコードが修正点がかなり多い状態なのですが、コンソールからエンターをおしたら、 mathranndamメソッドで、どのindexかを取得して、その値をget(index)でコンソールに出力させたいです。
jimbe

2021/10/30 06:50

ご質問自体に関わるコードでしたら、コメントにせずにご質問を編集して追加や既存の修正してください。コメント欄にはマークダウンが使えませんので、長くなってしまいます。 > mathranndamメソッドで、どのindexかを取得して、その値をget(index)でコンソールに出力 "Math.random" ですね。すると結局 total は fruitsPictorialPatternPic に入っているデータの数のつもりなのでしょうか。 であれば、 fruitsPictorialPatternPic の型である ArrayList には size() メソッドがあります。 https://docs.oracle.com/javase/jp/8/docs/api/java/util/ArrayList.html#size-- なぜこのような、ループして parseInt してというコードになったのかが不思議です。
退会済みユーザー

退会済みユーザー

2021/10/30 09:44

ご教授頂きありがとうございます。size() メソッドで実装してみたのですが、0から15までしかサイズはないはずなのに、デバッグで確認したところ、totalが120になってしまいました。どうしてかが理由がわからないのですが、教えていただけないでしょうか?
jimbe

2021/10/30 10:18 編集

> total += i; なぜループして足す必要があるのでしょうか。( size() と言ったらこう使うしかない…という思い込みがあるのか、それともループして計算するロジックを使用することという指示がどこかからあるのでしょうか。) fruitsPictorialPatternPic に 15 個のデータが入っているのであれば fruitsPictorialPatternPic.size() は 15 を返します。 fruitsPictorialPatternPic.get() の為にランダムに targetIndex を求めて表示するなら、ループ等全く必要無く ( scanner.nextLine(); の後は) int targetIndex = (int)(Math.random() * fruitsPictorialPatternPic.size()); System.out.println(fruitsPictorialPatternPic.get(targetIndex) + "|" + bonusPictorialPatternPic.get(targetIndex)); だけで済みます。
dodox86

2021/10/30 10:17

1行1行理解せずにコードを書き進めてはいませんか? 分かっていないままコードをこねくり回しても要望通りに動くようにはなりません。
退会済みユーザー

退会済みユーザー

2021/10/30 10:47

jimbeさん、ご教授いただきましてありがとうございます。 したいことが実現できました。。size() を取り出すにはfor()文で回すしかないと考えました。 15回分ループしないと取得できないと思ってました。ありがとうございます! できましたら、回答のほうに記載いただけるとベストアンサーが押下できるのですが、、おねがいできないでしょうか?
退会済みユーザー

退会済みユーザー

2021/10/30 10:48

1行1行デバッグで確認しているのですが、なかなか理解が得られず困ってしまう時があります。。
jimbe

2021/10/30 11:05

> size() を取り出すにはfor()文で回すしかないと 確かに考えてみれば size() は for ループに出てくる例が多いと思います。 ですがプログラミングは一種のパズルです。 for 文と size() が直接関係しているわけは無く、もちろん for の中では i を加算しなければならないということもありません。 さまざまな部品を組み合わせて、言わばレゴブロックだとか、ゲーム的には Minecraft のレッドストーン回路ですかね(^^; どうすれば何を得られるかを考えて形にしていくのが、楽しい所であり苦しい所です。 ベストアンサーですが、ご自身で修正されたコードで回答を書かれて構いません。
guest

回答3

0

どういう結果を得たいのか分かりませんが、
数値に変換可能(数値と認識できる)な文字列でなければパース出来ません。
"1"とか。

"チェリー", "セブン", "スターバー", "ベル", "コイン", "おばけ"

単なる全角の文字列です。

"Programmer Life"

英字です。

Integer.parseInt()

文字列内の文字はすべて、10進数の桁である必要があります。

投稿2021/10/30 04:47

m.ts10806

総合スコア80871

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

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

0

quantityに何が入ってるのか確認してみては

投稿2021/10/30 04:41

y_waiwai

総合スコア87804

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

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

退会済みユーザー

退会済みユーザー

2021/10/30 04:52

確認してみたところ、’’^’’が入ってました。
guest

0

ベストアンサー

Java

1int total = 0; 2//for (int i = 0; i < fruitsPictorialPatternString.size(); i++) { 3//total += i; 4//} 5//random = 6//int random = (int) (Math.random() * total); 7//int targetIndex = random; 8//System.out.println(fruitsPictorialPatternPic.get(targetIndex) + "|" 9//+ fruitsPictorialPatternPic.get(targetIndex)+ "|" + //fruitsPictorialPatternPic.get(targetIndex)); 10 11上記から以下へ変更し文字列型のリストのインデックスを取得することができました。 12int targetIndex = (int)(Math.random() * fruitsPictorialPatternPic.size()); 13System.out.println(fruitsPictorialPatternPic.get(targetIndex) + "|" 14+ fruitsPictorialPatternPic.get(targetIndex)); 15

jimbeさん、ご教授いただきありがとうございました。
とても勉強になりました。

投稿2021/10/30 11:28

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.45%

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

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

質問する

関連した質問