どんちゃんのひまつぶし

とあるスタートアップにいるエンジニアの雑多ブログ

Java勉強日記~前回の疑問を検証~

f:id:d0nchan:20180117182648j:plain
前回は文字/数値を入力させました。
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);
    }
}

これを実行してみると
f:id:d0nchan:20180117121624p:plain
ダメですねぇ。やはりキーボードからの入力は文字列として扱われてしまう(合ってる?)ので、計算を行う場合は"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^)/

追記:これ、ここだけ半角なんだけど、誤植だよね?だからどうしたって感じだけど。
f:id:d0nchan:20180117181822j:plain