teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

プログラムの追加\(下のほう\)

2016/07/01 06:15

投稿

intelf___
intelf___

スコア868

answer CHANGED
@@ -47,4 +47,43 @@
47
47
  - Integer.parseInt(a)でint型に変換しているのに、Integer.valueOf(a).intValue()でまたint型に変換している
48
48
  - breakで指定していたラベルが、breakを外した後なのに残っている(loop:while())
49
49
 
50
- など。これらがスマートに見えない主な要因だと思います。
50
+ など。これらがスマートに見えない主な要因だと思います。
51
+
52
+
53
+
54
+ 機能は変えていませんが、より攻めてみました。逆に見づらいかもしれませんが行数は少ないです。
55
+ ```java
56
+ import java.util.*;
57
+ class Pow {
58
+ public static void main(String[] args){
59
+ while(true){
60
+ Scanner scan = new Scanner(System.in);
61
+ String str = "";
62
+ System.out.println("数値を入力して下さい。");
63
+
64
+ try{
65
+ int a = scan.nextInt(), b = scan.nextInt();
66
+ str += a +"の" + b + "乗は";
67
+ str += (int)Math.pow(a * 1.0, b * 1.0) + "です。\n";
68
+ } catch (Exception e) {
69
+ System.err.println("error:半角数字で入力してください。 ");
70
+ continue;
71
+ }
72
+
73
+ str += "計算を続けますか?[y/n]";
74
+ System.out.println(str);
75
+
76
+ while(true){
77
+ str = scan.next();
78
+ if(str.equals("y"))break;
79
+ else if(str.equals("n")){
80
+ System.out.println("計算を終了しました。");
81
+ return;
82
+ }
83
+
84
+ System.err.println("error:yまたはnを入力してください");
85
+ }
86
+ }
87
+ }
88
+ }
89
+ ```