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

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

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

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

Swing

SwingはJavaに標準で付属するグラフィック関連のクラスライブラリを指します。

例外

例外(exception)とは、プログラムの処理実行中に発生する、通常の処理の続行を妨げる特殊な事象のことを呼びます。この「例外」が発生した場合に、現在の処理を中断し、変わりに別の処理を実行させる事を「例外処理」と呼びます。

例外処理

例外処理(Exception handling)とは、プログラム実行中に異常が発生した場合、通常フローから外れ、例外として別の処理を行うようにデザインされたプログラミング言語構造です。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

2回答

4861閲覧

NumberFormatExceptionを解決したい

Rivermouth

総合スコア19

Java

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

Swing

SwingはJavaに標準で付属するグラフィック関連のクラスライブラリを指します。

例外

例外(exception)とは、プログラムの処理実行中に発生する、通常の処理の続行を妨げる特殊な事象のことを呼びます。この「例外」が発生した場合に、現在の処理を中断し、変わりに別の処理を実行させる事を「例外処理」と呼びます。

例外処理

例外処理(Exception handling)とは、プログラム実行中に異常が発生した場合、通常フローから外れ、例外として別の処理を行うようにデザインされたプログラミング言語構造です。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2020/06/30 05:24

サイトURL

上記のサイトを参考にし、簡単なゲームを作っているのですが、例外が発生し、自分では対処できないと思いこちらで質問させていただきます。

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "judge"

at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:580) at java.lang.Integer.parseInt(Integer.java:615) at net.sougetu.third.CodeBreakerThird.actionPerformed(CodeBreakerThird.java:119) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) at java.awt.Component.processMouseEvent(Component.java:6535) at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) at java.awt.Component.processEvent(Component.java:6300) at java.awt.Container.processEvent(Container.java:2236) at java.awt.Component.dispatchEventImpl(Component.java:4891) at java.awt.Container.dispatchEventImpl(Container.java:2294) at java.awt.Component.dispatchEvent(Component.java:4713) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) at java.awt.Container.dispatchEventImpl(Container.java:2280) at java.awt.Window.dispatchEventImpl(Window.java:2750) at java.awt.Component.dispatchEvent(Component.java:4713) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.awt.EventQueue$4.run(EventQueue.java:731) at java.awt.EventQueue$4.run(EventQueue.java:729) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Java

1package net.sougetu.third; 2 3import java.awt.BorderLayout; 4import java.awt.event.ActionEvent; 5import java.awt.event.ActionListener; 6 7import javax.swing.JButton; 8import javax.swing.JComboBox; 9import javax.swing.JFrame; 10import javax.swing.JOptionPane; 11import javax.swing.JPanel; 12import javax.swing.JScrollPane; 13import javax.swing.JTable; 14import javax.swing.ScrollPaneConstants; 15import javax.swing.table.DefaultTableModel; 16 17import net.sougetu.second.GameEngine; 18 19public class CodeBreakerThird extends JFrame implements ActionListener { 20 private JPanel panel; 21 private JPanel southPanel; 22 private JPanel centorPanel; 23 private JScrollPane sc; 24 private DefaultTableModel dtm; 25 private JTable resultTable; 26 private JComboBox[] inputBox = new JComboBox[3]; 27 private String[] selector = {"1", "2", "3", "4", "5", "6"}; 28 private JButton judge; 29 private GameEngine ge = new GameEngine(); 30 31 public CodeBreakerThird() { 32 panel = new JPanel(new BorderLayout()); 33 centorPanel = new JPanel(); 34 southPanel = new JPanel(); 35 dtm = new DefaultTableModel(); 36 dtm.addColumn("1"); 37 dtm.addColumn("2"); 38 dtm.addColumn("3"); 39 dtm.addColumn("HIT"); 40 dtm.addColumn("BLOW"); 41 42 resultTable = new JTable(dtm); 43 resultTable.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS); 44 sc = new JScrollPane(resultTable, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, 45 ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); 46 centorPanel.add(sc); 47 48 for(int i=0; i<3; i++) { 49 inputBox[i] = new JComboBox(selector); 50 inputBox[i].setActionCommand("" + i); 51 inputBox[i].addActionListener(this); 52 southPanel.add(inputBox[i]); 53 } 54 judge = new JButton("JUDGEボタン");//テキスト付きのボタン生成 55 judge.setActionCommand("judge"); 56 judge.addActionListener(this); 57 southPanel.add(judge); 58 59 panel.add(centorPanel, BorderLayout.CENTER); 60 panel.add(southPanel, BorderLayout.SOUTH); 61 this.getContentPane().add(panel); 62 63 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 64 this.setBounds(100, 100, 400, 500); 65 this.pack(); 66 this.setTitle(ge.getTitle()); 67 this.setVisible(true); 68 69 JOptionPane.showMessageDialog(this, ge.getRule(), ge.getTitle(), JOptionPane.INFORMATION_MESSAGE); 70 71 ge.setInput(new int[] {1, 1, 1}); 72 } 73 74 public void actionPerformed(ActionEvent arg0) { 75 System.out.println(arg0.getActionCommand()); 76 if(arg0.getActionCommand().equalsIgnoreCase("judge")) { 77 78 boolean judge = ge.judge(); 79 80 int[] ans = ge.getAnswer(); 81 System.out.println("答え"); 82 for(int i=0; i<ans.length; i++) { 83 System.out.print(ans[i]); 84 } 85 System.out.println(); 86 System.out.println("入力"); 87 int[] input = ge.getInput(); 88 for(int i=0; i<input.length; i++) { 89 System.out.print(input[i]); 90 } 91 System.out.println(); 92 System.out.println("hit" + ge.getHit() + "blow" + ge.getBlow()); 93 94 Object[] row = new Object[5]; 95 for(int i=0; i<3; i++) { 96 row[i] = Integer.valueOf(input[i]); 97 } 98 row[3] = Integer.valueOf(ge.getHit()); 99 row[4] = Integer.valueOf(ge.getBlow()); 100 dtm.addRow(row); 101 if(judge) { 102 int res = JOptionPane.showConfirmDialog(this, "まだ続けますか?", "おめでとう", JOptionPane.YES_NO_OPTION); 103 if(res == JOptionPane.YES_OPTION) { 104 int count = dtm.getRowCount(); 105 for(int i=0; i<count; i++) { 106 dtm.removeRow(0); 107 } 108 ge.makeAnswers(); 109 ge.setInput(new int[] {1, 1, 1}); 110 ge.judge(); 111 112 for(int i=0; i<inputBox.length; i++) { 113 inputBox[i].setSelectedIndex(0); 114 } 115 }else { 116 System.exit(0); 117 } 118 }else { 119 int input2 = Integer.parseInt(arg0.getActionCommand()); 120 ge.inputAnswer(input2, (String) inputBox[input2].getSelectedItem()); 121 } 122 } 123 } 124 public static void main(String[] args) { 125 new CodeBreakerThird(); 126 } 127} 128

Java

1package net.sougetu.second; 2 3import java.util.Scanner; 4 5public class GameEngine { 6 Scanner std = new Scanner(System.in); 7 private String title = "***CoderBreaker***"; 8 private String rule = "隠された3つの数字を当てます。\n" 9 + "1つの数字は1から6の間です。\n" 10 + "3つの答えの中に同じ数字はありません。\n" 11 + "入力した数字の位置と数字があっていたらヒット\n" 12 + "数字だけあっていたらブローとします。\n" 13 + "全部当てたら終了です。"; 14 private int[] answer; 15 private int[] input; 16 private int numberOfAnswers = 3; 17 private int widthOfRandom = 6; 18 private int hit = 0; 19 private int blow = 0; 20 21 public GameEngine() { 22 answer = new int[numberOfAnswers]; 23 input = new int[numberOfAnswers]; 24 makeAnswers(); 25 } 26 27 public GameEngine(int numverOfAnswers) { 28 this.numberOfAnswers = numberOfAnswers; 29 answer = new int[numberOfAnswers]; 30 input = new int[numberOfAnswers]; 31 makeAnswers(); 32 } 33 34 public void makeAnswers() { 35 if(answer.length != numberOfAnswers) { 36 answer = new int[numberOfAnswers]; 37 input = new int[numberOfAnswers]; 38 } 39 for(int i=0; i<answer.length; i++) { 40 boolean flag = false; 41 answer[i] = (int)(Math.random() * 6 + 1); 42 do { 43 flag = false; 44 for(int j=i-1; j>=0; j--) { 45 if(answer[i] == input[j]) { 46 flag = true; 47 answer[i] = (int)(Math.random() * 6 + 1); 48 } 49 } 50 }while(flag == true); 51 } 52 } 53 54 public void inputAnswer(int index, int answer) { 55 if(index > -1 && index < numberOfAnswers) { 56 if(answer > 0 && answer <= widthOfRandom) { 57 input[index] = answer; 58 } 59 } 60 } 61 62 public void inputAnswer(int index, String string) { 63 int answer; 64 answer = Integer.parseInt(string); 65 inputAnswer(index, answer); 66 } 67 68 public boolean judge() { 69 hit = 0; 70 blow = 0; 71 for(int i=0; i<answer.length; i++) { 72 for(int j=0; j<answer.length; j++) { 73 if(i == j && answer[i] == input[j]) { 74 hit++; 75 }else if(answer[i] == input[j]) { 76 blow++; 77 } 78 } 79 } 80 return (hit == numberOfAnswers); 81 } 82 public int getNumberOfAnswers() { 83 return numberOfAnswers; 84 } 85 public int getWidthOfRandom() { 86 return widthOfRandom; 87 } 88 public int[] getAnswer() { 89 return answer; 90 } 91 public int[] getInput() { 92 return input; 93 } 94 public void setInput(int[] input) { 95 for(int i=0; i<input.length; i++) { 96 inputAnswer(i, input[i]); 97 } 98 } 99 public int getHit() { 100 return hit; 101 } 102 public int getBlow() { 103 return blow; 104 } 105 public String getRule() { 106 return rule; 107 } 108 public void setRule() { 109 this.rule = rule; 110 } 111 public String getTitle() { 112 return title; 113 } 114 public void setTitle() { 115 this.title = title; 116 } 117 118} 119

スタックトレースを見ると、CodeBreakerThirdクラスの119行目で問題が発生していると分かりました。原因としては、parseIntメソッドは文字列を10進数の整数に変換するものであるが、引数として与えているorg0.getActionCommand()の戻り値はString型で"judge"だったので、不一致が起きていると思われます。
ここからどのように訂正すれば良いのでしょうか?
分かりやすくお願い致します。

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

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

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

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

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

guest

回答2

0

解決されてなさそうなので回答しておきます。
元のコードのこのコメントをきちんと読んでいますか?

Judge以外なので入力部分の処理となる

と書いてあります。
本来であればCodeBreakerThirdクラスの76行目でarg0actionCommandjudgeかを判定しているので、judgeで無い場合(=数字の時)のみ119行目が実行されるようになっているようです。
つまりどこかで中カッコのミスが起こったために本来しないはずのjudgeの数値への変換が起こったということです。

投稿2024/01/15 08:15

perfectibility

総合スコア46

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

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

0

java.lang.NumberFormatException: For input string: "judge"

"judge"という文字列を数値変換しようとしてエラーが出てます。
その例外(エラー)が出る行を特定して、変数の内容を確認してみよう

投稿2020/06/30 05:47

y_waiwai

総合スコア88042

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

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

Rivermouth

2020/06/30 06:10

問題の行は int input2 = Integer.parseInt(arg0.getActionCommand()); だと思っています。 これは、judge.setActionCommand("judge");でjudgeをActionCommandとして設定しているので、エラーが出てしまっていると思うのですが、ここからどのように訂正したら良いのかが分からずに困っています。
y_waiwai

2020/06/30 06:25

そこでなにをどうしたいんでしょうか。 間違ってjudgeになってしまってるならそれを修正すればいいだけですが、それがあってると言うなら数値変換してるのが間違いってことになりますが
Rivermouth

2020/06/30 06:35

getActionCommand()の戻り値を"0"として試したところ、例外は起きなくなりました。 ただ、入力した数字を正しく読み込まず、ゲームとして成立しなくなってしまいました。。 このサイトのソースコードを実行すると、"judge"なのにも関わらず正常に動くんですよね、、
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問