初めに
- プログラミングの経験としては大学で基礎を少し学んだだけであり、社会人になってからは(恐らく)1度も触ったことがありませんでした。ただ、最近javaの勉強をする機会があり、そこで学んだ内容から電卓のようなものを作れ、せっかくなら共有してみればと言われましたのでQiitaの記事を作成しました。
実際に作成したコード
package projava;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.InputMismatchException;
import java.util.Scanner;
public class test_0902 {
public static void main(String[] args) throws IOException {
//数字を入力できるようにする
Scanner numbers = new Scanner(System.in);
try {
//数式を入力できるようにする
BufferedReader formula = new BufferedReader(new InputStreamReader(System.in));
//1文字目の入力
var input1 = numbers.nextInt();
for (; ; ) {
//2文字目の入力
var input2 = formula.readLine();
//「=」が入力された際は終了する
if (input2.equals("=")) {
System.out.println("計算の答えは%sです。".formatted(input1));
break;
}
//3文字目の入力
var input3 = numbers.nextInt();
//2文字目の式によって分岐
if (input2.equals("+")) {
input1 = input1 + input3;
System.out.println(input1);
continue;
} else if (input2.equals("-")) {
input1 = input1 - input3;
System.out.println(input1);
continue;
} else if (input2.equals("*")) {
input1 = input1 * input3;
System.out.println(input1);
continue;
} else if (input2.equals("/")) {
input1 = input1 / input3;
System.out.println(input1);
continue;
} else {
System.out.println("2番目の入力は+、-、*、/ の何れかを入力してください。");
break;
}
}
//1、3文字目に数字が入力されなかった際に出力されるメッセージ
} catch (InputMismatchException s) {
System.out.println("数字を入力してください。");
}
}
}
実際の動作
- 正常系
5
+
6
11
=
計算の答えは11です。
プロセスは終了コード 0 で終了しました
- 異常系1(1文字目に数字ではなく文字を入力)
a
数字を入力してください。
プロセスは終了コード 0 で終了しました
- 異常系2(2文字目の入力で数式以外を入力)
1
a
1
2番目の入力は+、-、*、/ の何れかを入力してください。
プロセスは終了コード 0 で終了しました
実装してみて
- 一応想定通りに動くものができたので良かったと思います。
- 異常値が入力された際のことも考慮できたので良かったです。
- 2番目に入力した文字が「+」、「-」、「*」、「/」、「=」以外の際にも3文字目の入力が求められてしまうので、改善したかったのですが、改善できませんでした。
- コメントアウトを入れることで逆にコードが見にくくなってしまった気がしましたので、コメントの書き方も工夫できるようにしたいです。
最後に
- ここの部分はこうした方がいい等ありましたらぜひ意見をいただきたいです。