どんちゃんのひまつぶし

4月からSEとして働く大学生が暇つぶしに旅行グルメガジェットなどについて書くブログ

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