
前回は文字/数値を入力させました。
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^)/
追記:これ、ここだけ半角なんだけど、誤植だよね?だからどうしたって感じだけど。
