Submit Search
Upload
Java初心者勉強会(2015/08/07)資料
•
6 likes
•
2,087 views
Toshio Ehara
Follow
Java初心者勉強会(2015/08/07) ご参加ありがとうございました。
Read less
Read more
Software
Report
Share
Report
Share
1 of 35
Download now
Download to read offline
Recommended
Java電卓勉強会資料
Java電卓勉強会資料
Toshio Ehara
関数型プログラミング in javascript
関数型プログラミング in javascript
Ryuma Tsukano
Clojure programming-chapter-2
Clojure programming-chapter-2
Masao Kato
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
Fujio Kojima
機械学習
機械学習
ssusere8ae711
Replace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JP
Akira Takahashi
これからのJavaScriptー関数型プログラミングとECMAScript6
これからのJavaScriptー関数型プログラミングとECMAScript6
TanUkkii
Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]
Ra Zon
Recommended
Java電卓勉強会資料
Java電卓勉強会資料
Toshio Ehara
関数型プログラミング in javascript
関数型プログラミング in javascript
Ryuma Tsukano
Clojure programming-chapter-2
Clojure programming-chapter-2
Masao Kato
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
Fujio Kojima
機械学習
機械学習
ssusere8ae711
Replace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JP
Akira Takahashi
これからのJavaScriptー関数型プログラミングとECMAScript6
これからのJavaScriptー関数型プログラミングとECMAScript6
TanUkkii
Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]
Ra Zon
メタプログラミング C#
メタプログラミング C#
Fujio Kojima
What is template
What is template
Akira Takahashi
error handling using expected
error handling using expected
Akira Takahashi
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
Fujio Kojima
JavaScript入門
JavaScript入門
Ryo Maruyama
for関数を使った繰り返し処理によるヒストグラムの一括出力
for関数を使った繰り返し処理によるヒストグラムの一括出力
imuyaoti
Map
Map
kikairoya
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
Hibiki Yamashiro
ぱっと見でわかるC++11
ぱっと見でわかるC++11
えぴ 福田
JavaScript 講習会 #1
JavaScript 講習会 #1
Susisu
C++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプ
Kohsuke Yuasa
Emcjp item21
Emcjp item21
MITSUNARI Shigeo
命令プログラミングから関数プログラミングへ
命令プログラミングから関数プログラミングへ
Naoki Kitora
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
natrium11321
研究生のためのC++ no.2
研究生のためのC++ no.2
Tomohiro Namba
Aedlabo program 20150125
Aedlabo program 20150125
としゆき 高橋
研究生のためのC++ no.4
研究生のためのC++ no.4
Tomohiro Namba
プログラミング言語のパラダイムシフトーScalaから見る関数型と並列性時代の幕開けー
プログラミング言語のパラダイムシフトーScalaから見る関数型と並列性時代の幕開けー
TanUkkii
Processing
Processing
Akifumi Nambu
JavaScript/CSS 2015 Autumn
JavaScript/CSS 2015 Autumn
Koji Ishimoto
20200930 CDLE LT#2_COD_AkihiroITO
20200930 CDLE LT#2_COD_AkihiroITO
Akihiro ITO
第2回 JavaScriptから始めるプログラミング2016
第2回 JavaScriptから始めるプログラミング2016
kyoto university
More Related Content
What's hot
メタプログラミング C#
メタプログラミング C#
Fujio Kojima
What is template
What is template
Akira Takahashi
error handling using expected
error handling using expected
Akira Takahashi
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
Fujio Kojima
JavaScript入門
JavaScript入門
Ryo Maruyama
for関数を使った繰り返し処理によるヒストグラムの一括出力
for関数を使った繰り返し処理によるヒストグラムの一括出力
imuyaoti
Map
Map
kikairoya
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
Hibiki Yamashiro
ぱっと見でわかるC++11
ぱっと見でわかるC++11
えぴ 福田
JavaScript 講習会 #1
JavaScript 講習会 #1
Susisu
C++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプ
Kohsuke Yuasa
Emcjp item21
Emcjp item21
MITSUNARI Shigeo
命令プログラミングから関数プログラミングへ
命令プログラミングから関数プログラミングへ
Naoki Kitora
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
natrium11321
研究生のためのC++ no.2
研究生のためのC++ no.2
Tomohiro Namba
Aedlabo program 20150125
Aedlabo program 20150125
としゆき 高橋
研究生のためのC++ no.4
研究生のためのC++ no.4
Tomohiro Namba
プログラミング言語のパラダイムシフトーScalaから見る関数型と並列性時代の幕開けー
プログラミング言語のパラダイムシフトーScalaから見る関数型と並列性時代の幕開けー
TanUkkii
Processing
Processing
Akifumi Nambu
What's hot
(19)
メタプログラミング C#
メタプログラミング C#
What is template
What is template
error handling using expected
error handling using expected
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
JavaScript入門
JavaScript入門
for関数を使った繰り返し処理によるヒストグラムの一括出力
for関数を使った繰り返し処理によるヒストグラムの一括出力
Map
Map
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
ぱっと見でわかるC++11
ぱっと見でわかるC++11
JavaScript 講習会 #1
JavaScript 講習会 #1
C++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプ
Emcjp item21
Emcjp item21
命令プログラミングから関数プログラミングへ
命令プログラミングから関数プログラミングへ
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
研究生のためのC++ no.2
研究生のためのC++ no.2
Aedlabo program 20150125
Aedlabo program 20150125
研究生のためのC++ no.4
研究生のためのC++ no.4
プログラミング言語のパラダイムシフトーScalaから見る関数型と並列性時代の幕開けー
プログラミング言語のパラダイムシフトーScalaから見る関数型と並列性時代の幕開けー
Processing
Processing
Similar to Java初心者勉強会(2015/08/07)資料
JavaScript/CSS 2015 Autumn
JavaScript/CSS 2015 Autumn
Koji Ishimoto
20200930 CDLE LT#2_COD_AkihiroITO
20200930 CDLE LT#2_COD_AkihiroITO
Akihiro ITO
第2回 JavaScriptから始めるプログラミング2016
第2回 JavaScriptから始めるプログラミング2016
kyoto university
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
Atsushi Tadokoro
About Jobs
About Jobs
Shinichi Kozake
ATN No.2 大阪から来たJavaPuzzlers
ATN No.2 大阪から来たJavaPuzzlers
AdvancedTechNight
Shibuya JVM Groovy 20150418
Shibuya JVM Groovy 20150418
Uehara Junji
Android Lecture #03 @PRO&BSC Inc.
Android Lecture #03 @PRO&BSC Inc.
Yuki Higuchi
究極のバッチフレームワーク(予定)
究極のバッチフレームワーク(予定)
fumoto kazuhiro
20141129-dotNet2015
20141129-dotNet2015
Takayoshi Tanaka
これからのJavaScriptの話
これからのJavaScriptの話
Shogo Sensui
第3回 JavaScriptから始めるプログラミング2016
第3回 JavaScriptから始めるプログラミング2016
kyoto university
今さら始めるCoffeeScript
今さら始めるCoffeeScript
Ashitaba YOSHIOKA
CLR/H No.35-2
CLR/H No.35-2
Nobuhisa Koizumi
15分でざっくり分かるScala入門
15分でざっくり分かるScala入門
SatoYu1ro
10のJava9で変わるJava8の嫌なとこ!
10のJava9で変わるJava8の嫌なとこ!
bitter_fox
Hello, Guava ! samples
Hello, Guava ! samples
輝 子安
Java SE 7 InvokeDynamic in JRuby
Java SE 7 InvokeDynamic in JRuby
Hiroshi Nakamura
ji-6. 配列
ji-6. 配列
kunihikokaneko1
Rの高速化
Rの高速化
弘毅 露崎
Similar to Java初心者勉強会(2015/08/07)資料
(20)
JavaScript/CSS 2015 Autumn
JavaScript/CSS 2015 Autumn
20200930 CDLE LT#2_COD_AkihiroITO
20200930 CDLE LT#2_COD_AkihiroITO
第2回 JavaScriptから始めるプログラミング2016
第2回 JavaScriptから始めるプログラミング2016
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 2: 構造をつくる
About Jobs
About Jobs
ATN No.2 大阪から来たJavaPuzzlers
ATN No.2 大阪から来たJavaPuzzlers
Shibuya JVM Groovy 20150418
Shibuya JVM Groovy 20150418
Android Lecture #03 @PRO&BSC Inc.
Android Lecture #03 @PRO&BSC Inc.
究極のバッチフレームワーク(予定)
究極のバッチフレームワーク(予定)
20141129-dotNet2015
20141129-dotNet2015
これからのJavaScriptの話
これからのJavaScriptの話
第3回 JavaScriptから始めるプログラミング2016
第3回 JavaScriptから始めるプログラミング2016
今さら始めるCoffeeScript
今さら始めるCoffeeScript
CLR/H No.35-2
CLR/H No.35-2
15分でざっくり分かるScala入門
15分でざっくり分かるScala入門
10のJava9で変わるJava8の嫌なとこ!
10のJava9で変わるJava8の嫌なとこ!
Hello, Guava ! samples
Hello, Guava ! samples
Java SE 7 InvokeDynamic in JRuby
Java SE 7 InvokeDynamic in JRuby
ji-6. 配列
ji-6. 配列
Rの高速化
Rの高速化
More from Toshio Ehara
iPhoneアプリを Javaで書くよ?
iPhoneアプリを Javaで書くよ?
Toshio Ehara
BABELで、ES2015(ES6)を学ぼう!
BABELで、ES2015(ES6)を学ぼう!
Toshio Ehara
AngularJSで業務システムUI部品化
AngularJSで業務システムUI部品化
Toshio Ehara
traceur-compilerで ECMAScript6を体験
traceur-compilerで ECMAScript6を体験
Toshio Ehara
traceur-compilerで未来のJavaScriptを体験
traceur-compilerで未来のJavaScriptを体験
Toshio Ehara
AngularJS入門の巻2
AngularJS入門の巻2
Toshio Ehara
JenkinsをJava開発でこんな感じで使っています
JenkinsをJava開発でこんな感じで使っています
Toshio Ehara
AngularJS入門の巻
AngularJS入門の巻
Toshio Ehara
AngularJS+TypeScriptを試してみた。
AngularJS+TypeScriptを試してみた。
Toshio Ehara
AngularJSのDirectiveで俺俺タグつくっちゃお
AngularJSのDirectiveで俺俺タグつくっちゃお
Toshio Ehara
HTML5のCanvas入門 - Img画像を編集してみよう -
HTML5のCanvas入門 - Img画像を編集してみよう -
Toshio Ehara
BACKBONEJS+SCSS+JavaEE(JAX-RS) 今風のWebアプリをNetBeansで入門!
BACKBONEJS+SCSS+JavaEE(JAX-RS) 今風のWebアプリをNetBeansで入門!
Toshio Ehara
福岡のIT勉強会情報の集め方(LT資料)
福岡のIT勉強会情報の集め方(LT資料)
Toshio Ehara
BACKBONE.JSによるWebアプリケーション開発について
BACKBONE.JSによるWebアプリケーション開発について
Toshio Ehara
BACKBONE.JSにJasmineでテストコード書いてみた (LT資料)
BACKBONE.JSにJasmineでテストコード書いてみた (LT資料)
Toshio Ehara
JavaScriptのテストコード 一緒に勉強しませんか??
JavaScriptのテストコード 一緒に勉強しませんか??
Toshio Ehara
【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜
【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜
Toshio Ehara
LT Leap MotionとJavaScriptで遊ぼう!
LT Leap MotionとJavaScriptで遊ぼう!
Toshio Ehara
JavaScriptもBACKBONE.JSならスッキリ ~MVCぽいのを初体験!~
JavaScriptもBACKBONE.JSならスッキリ ~MVCぽいのを初体験!~
Toshio Ehara
BACKBONE.JSでMVC始めませんか?
BACKBONE.JSでMVC始めませんか?
Toshio Ehara
More from Toshio Ehara
(20)
iPhoneアプリを Javaで書くよ?
iPhoneアプリを Javaで書くよ?
BABELで、ES2015(ES6)を学ぼう!
BABELで、ES2015(ES6)を学ぼう!
AngularJSで業務システムUI部品化
AngularJSで業務システムUI部品化
traceur-compilerで ECMAScript6を体験
traceur-compilerで ECMAScript6を体験
traceur-compilerで未来のJavaScriptを体験
traceur-compilerで未来のJavaScriptを体験
AngularJS入門の巻2
AngularJS入門の巻2
JenkinsをJava開発でこんな感じで使っています
JenkinsをJava開発でこんな感じで使っています
AngularJS入門の巻
AngularJS入門の巻
AngularJS+TypeScriptを試してみた。
AngularJS+TypeScriptを試してみた。
AngularJSのDirectiveで俺俺タグつくっちゃお
AngularJSのDirectiveで俺俺タグつくっちゃお
HTML5のCanvas入門 - Img画像を編集してみよう -
HTML5のCanvas入門 - Img画像を編集してみよう -
BACKBONEJS+SCSS+JavaEE(JAX-RS) 今風のWebアプリをNetBeansで入門!
BACKBONEJS+SCSS+JavaEE(JAX-RS) 今風のWebアプリをNetBeansで入門!
福岡のIT勉強会情報の集め方(LT資料)
福岡のIT勉強会情報の集め方(LT資料)
BACKBONE.JSによるWebアプリケーション開発について
BACKBONE.JSによるWebアプリケーション開発について
BACKBONE.JSにJasmineでテストコード書いてみた (LT資料)
BACKBONE.JSにJasmineでテストコード書いてみた (LT資料)
JavaScriptのテストコード 一緒に勉強しませんか??
JavaScriptのテストコード 一緒に勉強しませんか??
【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜
【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜
LT Leap MotionとJavaScriptで遊ぼう!
LT Leap MotionとJavaScriptで遊ぼう!
JavaScriptもBACKBONE.JSならスッキリ ~MVCぽいのを初体験!~
JavaScriptもBACKBONE.JSならスッキリ ~MVCぽいのを初体験!~
BACKBONE.JSでMVC始めませんか?
BACKBONE.JSでMVC始めませんか?
Java初心者勉強会(2015/08/07)資料
1.
Java初心者勉強会 電卓を作ってJavaを学ぼう 2015/08/07(金)
2.
目的 ● Javaを基礎から習得する ● 実際に手を動かして理解を深める ● アプリ作成を通じプログラムを学ぶ
3.
今日の内容 ● 逆ポーランド記法の説明 ● 足し算を作る ● 掛け算を追加 ● 休憩 ● 計算処理を追加しやすい形にする
4.
逆ポーランド記法の説明 ● 3 + 4
を 3 4 + と書く ● ( 1+5) * ( 2+3) を 1 5 + 2 3 + * と書く ● 詳しくは... https://ja.wikipedia.org/wiki/ %E9%80%86%E3%83%9D%E3%83%BC %E3%83%A9%E3%83%B3%E3%83%89% E8%A8%98%E6%B3%95
5.
1 2 +
の場合 1 2 31 1を PUSH 2を PUSH 1 2 POP 計算結果を PUSH 2 + 1 => 3
6.
3 2 1
+ * の場合 3 2 33 1を PUSH 2を PUSH 3 2 POP 計算結果を PUSH 1 + 2 => 3 2 1 3を PUSH 3 1 3 3 3 POP 3 * 3 => 9 9 計算結果を PUSH
7.
まずは 足し算のみで作る
8.
プログラム開始を記述 public class Main
{ public static void main(String... args) { System.out.println("Hello Calculator!"); } } Main.java mainメソッド から始まります Main.java を新規作成してください。 (補足: public 外から見える static 一つしかない)
9.
実行結果 Hello Calculator! コマンドプロンプトの場合は Javac
Main.java でコンパイルします java Main で実行します
10.
計算クラスを作る(中は適当 import java.util.Stack; public class
Calculator { public Calculator() { } public int execute(String input) { Stack<Integer> stack = new Stack<>(); stack.push(Integer.valueOf("1")); stack.push(Integer.valueOf("2")); return stack.pop(); } } Calculator.java 1 2 1、2と数値の入った箱を積む(PUSHする)プログラムを書きます 上から取り出します(POPする)
11.
計算クラスを呼び出す public class Main
{ public static void main(String... args) { System.out.println("Hello Calculator!"); Calculator cal = new Calculator(); String test = ""; System.out.format(" %s = %d ", test, cal.execute(test)); } } Main.java クラス(Calculator)をnewするとインスタンス(cal)が作れます。 クラス classnew!
12.
実行結果 Hello Calculator! = 2
13.
計算クラスを呼び出す public class Main
{ public static void main(String... args) { System.out.println("Hello Calculator!"); Calculator cal = new Calculator(); String test = "1 2 +"; System.out.format(" %s = %d ", test, cal.execute(test)); } } Main.java [1] [2] [+] を Calculatorクラスのインスタンスに計算させて 3 を返します
14.
計算クラスを作る import java.util.Stack; public class
Calculator { public Calculator() { } public int execute(String input) { Stack<Integer> stack = new Stack<>(); for (String s : input.split("s")) { if ("+".equals(s)) { Integer num1 = stack.pop(); Integer num2 = stack.pop(); stack.push(Integer.valueOf(num1 + num2)); } else { stack.push(Integer.valueOf(s)); } } return stack.pop(); } } Calculator.java 1 2 1 2 +
15.
実行結果 Hello Calculator! 1 2
+ = 3
16.
掛け算の処理を追加する
17.
掛け算処理を追加 public class Main
{ public static void main(String... args) { System.out.println("Hello Calculator!"); Calculator cal = new Calculator(); String test = "3 2 1 + *"; System.out.format(" %s = %d ", test, cal.execute(test)); } } Main.java [3] [1] [2] [+] [*] を Calculatorクラスのインスタンスに計算させて 9 を返します
18.
掛け算処理を追加 for (String s
: input.split("s")) { if ("+".equals(s)) { Integer num1 = stack.pop(); Integer num2 = stack.pop(); stack.push(Integer.valueOf(num1 + num2)); } else if ("*".equals(s)) { Integer num1 = stack.pop(); Integer num2 = stack.pop(); stack.push(Integer.valueOf(num1 * num2)); } else { stack.push(Integer.valueOf(s)); } } Calculator.java Calculatorクラスに [*] が来た場合の処理を追加します
19.
実行結果 Hello Calculator! 3 2
1 + * = 9
20.
- 休憩 -
21.
処理の追加を分業可能にする
22.
インターフェースを作る for (String s
: input.split("s")) { if ("+".equals(s)) { Integer num1 = stack.pop(); Integer num2 = stack.pop(); stack.push(Integer.valueOf(num1 + num2)); } else if ("*".equals(s)) { Integer num1 = stack.pop(); Integer num2 = stack.pop(); stack.push(Integer.valueOf(num1 * num2)); } else { stack.push(Integer.valueOf(s)); } } Integer execute(Integer num1, Integer num2); 処理が増える度に 条件分岐を 増やすと大変 処理は共通して 二つの数字を引数に 一つの数字を返す Calculator.java
23.
起動クラスの修正 import java.util.HashMap; import java.util.Map; public
class Main { public static void main(String... args) { System.out.println("Hello Calculator!"); Map<String, Operator> operators = new HashMap<>(); operators.put("+", new Add()); operators.put("*", new Multi()); Calculator cal = new Calculator(operators); String test = "3 2 1 + *"; System.out.format(" %s = %d ", test, cal.execute(test)); } } 処理が増えると ここが増える Main.java
24.
インターフェースを作る public interface Operator
{ Integer execute(Integer num1, Integer num2); } 処理は共通して 二つの数字を引数に 一つの数字を返す Operator.java
25.
足し算と掛け算クラス public class Add
implements Operator { @Override public Integer execute(Integer num1, Integer num2) { return Integer.valueOf(num1 + num2); } } public class Multi implements Operator { @Override public Integer execute(Integer num1, Integer num2) { return Integer.valueOf(num1 * num2); } } Add.java Multi.java
26.
計算クラスを修正import java.util.*; public class
Calculator { private final Map<String, Operator> operators; public Calculator(Map<String, Operator> operators) { this.operators = operators; } public int execute(String input) { Stack<Integer> stack = new Stack<>(); for (String s : input.split("s")) { Operator operator = operators.get(s); if (operator != null) { Integer num1 = stack.pop(); Integer num2 = stack.pop(); stack.push(operator.execute(num1, num2)); } else { stack.push(Integer.valueOf(s)); } } return stack.pop(); } } 処理が増えても 条件分岐を 増やさなくてもよく なりました Calculator.java
27.
実行結果 Hello Calculator! 3 2
1 + * = 9
28.
匿名クラスで追加 package com.company; import java.util.HashMap; import
java.util.Map; public class Main { public static void main(String[] args) { System.out.println("Hello Calculator!"); Map<String, Operator> operators = new HashMap<>(); operators.put("+", new Add()); operators.put("*", new Multi()); operators.put("-", new Operator() { @Override public Integer execute(Integer num1, Integer num2) { return num2 - num1; } }); Calculator cal = new Calculator(operators); String test = "15 3 2 1 + * -"; System.out.format(" %s = %d ", test, cal.execute(test)); } } 処理を匿名クラスで 追加する Main.java
29.
実行結果 Hello Calculator! 15 3
2 1 + * - = 6
30.
Java8のラムダで書くと package com.company; import java.util.HashMap; import
java.util.Map; public class Main { public static void main(String[] args) { System.out.println("Hello Calculator!"); Map<String, Operator> operators = new HashMap<>(); operators.put("+", new Add()); operators.put("*", new Multi()); operators.put("-", (Integer num1, Integer num2) -> { return num2 - num1; }); Calculator cal = new Calculator(operators); String test = "15 3 2 1 + * -"; System.out.format(" %s = %d ", test, cal.execute(test)); } } 短くシンプルに Main.java
31.
もう少し短く package com.company; import java.util.HashMap; import
java.util.Map; public class Main { public static void main(String[] args) { System.out.println("Hello Calculator!"); Map<String, Operator> operators = new HashMap<>(); operators.put("+", new Add()); operators.put("*", new Multi()); operators.put("-", (num1, num2) -> num2 - num1); Calculator cal = new Calculator(operators); String test = "15 3 2 1 + * -"; System.out.format(" %s = %d ", test, cal.execute(test)); } } もっと短くシンプルに Main.java
32.
実行結果 Hello Calculator! 15 3
2 1 + * - = 6
33.
割り算を加えて完成 package com.company; import java.util.HashMap; import
java.util.Map; public class Main { public static void main(String[] args) { System.out.println("Hello Calculator!"); Map<String, Operator> operators = new HashMap<>(); operators.put("+", new Add()); operators.put("*", new Multi()); operators.put("-", (num1, num2) -> num2 - num1); operators.put("/", (num1, num2) -> num2 / num1); Calculator cal = new Calculator(operators); String test = "12 15 3 2 1 + * - /"; System.out.format(" %s = %d ", test, cal.execute(test)); } } Main.java
34.
実行結果 Hello Calculator! 12 15
3 2 1 + * - / = 2
35.
- 本日はここまでです。お疲れ様でした -
Download now