前回は文字/数値を入力させました。
Twitterで、検証した記事を書いてほしい、という声が上がりましたので検証してみました。
『★』は変更点です。
元のコード
import java.io.*; class ex206 { public static void main (String args[]) throws IOException { int data1,data2,data3; String strg1,strg2; BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); //入力要求のメッセージ System.out.print("data1="); ★strg1 = br.readLine(); System.out.print("data2="); ★strg2 = br.readLine(); //標準入力からのデータを整数の値に変換 data1 = Integer.parseInt(strg1); data2 = Integer.parseInt(strg2); data3 = (data1 + data2) * (data1-data2); System.out.println("(data1+data2) * (data1-data2) = "+ data3); } }
【疑問2】strg1,strg2ではなく、整数型のdata1,data2にbr.readLineを使って代入
import java.io.*; class ex206 { public static void main (String args[]) throws IOException { int data1,data2,data3; String strg1,strg2; BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); //入力要求のメッセージ System.out.print("data1="); ★data1 = br.readLine(); System.out.print("data2="); ★data2 = br.readLine(); //標準入力からのデータを整数の値に変換 data1 = Integer.parseInt(strg1); data2 = Integer.parseInt(strg2); data3 = (data1 + data2) * (data1-data2); System.out.println("(data1+data2) * (data1-data2) = "+ data3); } }
これを実行してみると
ダメですねぇ。やはりキーボードからの入力は文字列として扱われてしまう(合ってる?)ので、計算を行う場合は"Integer.parseInt"で整数型に変換する必要があるみたいです。
もっと短くできない?
以下のリンクとともにそんな提案もTwitterから。
というわけで、定義と代入(変数の初期化)を一緒にしてみる。
import java.io.*; class ex206 { public static void main (String args[]) throws IOException { BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); //入力要求のメッセージ System.out.print("data1="); String strg1 = br.readLine(); System.out.print("data2="); String strg2 = br.readLine(); //標準入力からのデータを整数の値に変換 ★int data1 = Integer.parseInt(strg1); ★int data2 = Integer.parseInt(strg2); ★int data3 = (data1 + data2) * (data1-data2); System.out.println("(data1+data2) * (data1-data2) = "+ data3); } }
2行減らすことができました!
解 決\(^o^)/
追記:これ、ここだけ半角なんだけど、誤植だよね?だからどうしたって感じだけど。