質問編集履歴
2
質問の変更
title
CHANGED
File without changes
|
body
CHANGED
@@ -7,12 +7,12 @@
|
|
7
7
|
import java.util.*;
|
8
8
|
import java.util.function.*;
|
9
9
|
public class CalculatorFunc {
|
10
|
-
HashMap<String,DoubleUnaryOperator> optable = new HashMap<
|
10
|
+
HashMap<String,DoubleUnaryOperator> optable = new HashMap<> ();
|
11
11
|
void run() {
|
12
|
-
optable.put("+",
|
12
|
+
optable.put("+",(x,y) -> {return x+y;});
|
13
|
-
optable.put("-",
|
13
|
+
optable.put("-",(x,y) -> {return x-y;});
|
14
|
-
optable.put("*",
|
14
|
+
optable.put("*",(x,y) -> {return x*y;});
|
15
|
-
optable.put("/",
|
15
|
+
optable.put("/",(x,y) -> {return x/y;});
|
16
16
|
Scanner sc = new Scanner(System.in);
|
17
17
|
while(true) {
|
18
18
|
String [] input = sc.nextLine().split("[ ]+");
|
@@ -32,7 +32,7 @@
|
|
32
32
|
// 演算の処理
|
33
33
|
double v2 =stack.pollFirst();
|
34
34
|
double v1 =stack.pollFirst();
|
35
|
-
double value = optable.get(st).
|
35
|
+
double value = optable.get(st).applyAsDouble(value);
|
36
36
|
// スタックにプッシュする処理を下に書く
|
37
37
|
stack.push(value);
|
38
38
|
} else {
|
@@ -50,11 +50,22 @@
|
|
50
50
|
}
|
51
51
|
}
|
52
52
|
```
|
53
|
-
このような形で作ったのですが、
|
53
|
+
このような形で作ったのですが、以下の部分だけエラーが出てきます。どのように修正すれば良いでしょうか
|
54
|
-
調べてみましたが、解決法がわからず、どのように修正すれば良いか教えていただきたいです
|
55
|
-
```
|
54
|
+
```java
|
55
|
+
optable.put("+",(x,y) -> {return x+y;});
|
56
|
+
optable.put("-",(x,y) -> {return x-y;});
|
57
|
+
optable.put("*",(x,y) -> {return x*y;});
|
56
|
-
|
58
|
+
optable.put("/",(x,y) -> {return x/y;});
|
59
|
+
```
|
57
60
|
|
61
|
+
エラーメッセージ
|
62
|
+
```
|
63
|
+
- Lambda expression's signature does not match the signature of the functional
|
64
|
+
interface method applyAsDouble(double)
|
65
|
+
- 型 HashMap<String,DoubleUnaryOperator> のメソッド put(String,
|
66
|
+
DoubleUnaryOperator) は引数 (String, (<no type> x, <no type> y) -> {}) に適用できませ
|
67
|
+
ん
|
58
|
-
|
68
|
+
- 構文エラーがあります。";" を挿入して BlockStatements を完了してください
|
59
|
-
|
69
|
+
- 構文エラーがあります。"AssignmentOperator Expression" を挿入して Assignment
|
70
|
+
を完了してください
|
60
71
|
```
|
1
プログラムの加筆
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
四則演算の処理において、演算子の文字列をキーとし、四則演算処理を行う関数を値としたHashMapを利用したプログラムとして作成したい。
|
2
2
|
四則演算の方法としては「逆ポーランド記法の四則演算」のようなプログラムにしたい。
|
3
3
|
|
4
|
-
|
4
|
+
プログラムは作りましたが、エラーが出てしまいます
|
5
5
|
```java
|
6
6
|
package prog2;
|
7
7
|
import java.util.*;
|
8
8
|
import java.util.function.*;
|
9
9
|
public class CalculatorFunc {
|
10
|
-
HashMap<String,
|
10
|
+
HashMap<String,DoubleUnaryOperator> optable = new HashMap<String,DoubleUnaryOperator> ();
|
11
11
|
void run() {
|
12
|
-
optable.put("+", (x, y) -> {
|
12
|
+
optable.put("+", (x, y) -> {(x+y)});
|
13
|
-
optable.put("-", (x, y) -> {
|
13
|
+
optable.put("-", (x, y) -> {(x-y)});
|
14
|
-
optable.put("*", (x, y) -> {
|
14
|
+
optable.put("*", (x, y) -> {x*y});
|
15
|
-
optable.put("/", (x, y) -> {
|
15
|
+
optable.put("/", (x, y) -> {x/y});
|
16
16
|
Scanner sc = new Scanner(System.in);
|
17
17
|
while(true) {
|
18
18
|
String [] input = sc.nextLine().split("[ ]+");
|
@@ -30,17 +30,19 @@
|
|
30
30
|
System.out.println(st); // デバッグ用
|
31
31
|
if(optable.containsKey(st)) {
|
32
32
|
// 演算の処理
|
33
|
-
double v2 =
|
33
|
+
double v2 =stack.pollFirst();
|
34
|
-
double v1 =
|
34
|
+
double v1 =stack.pollFirst();
|
35
|
-
double value = optable.get(st).
|
35
|
+
double value = optable.get(st).Double.parseDouble(st);
|
36
36
|
// スタックにプッシュする処理を下に書く
|
37
|
+
stack.push(value);
|
37
38
|
} else {
|
38
39
|
// それ以外は数字だと思う
|
39
40
|
double value = Double.parseDouble(st);
|
40
41
|
// スタックにプッシュする処理を下に書く
|
42
|
+
stack.push(value);
|
41
43
|
}
|
42
44
|
}
|
43
|
-
double ans =
|
45
|
+
double ans =stack.pop();
|
44
46
|
return ans;
|
45
47
|
}
|
46
48
|
public static void main(String[] args) {
|
@@ -48,4 +50,11 @@
|
|
48
50
|
}
|
49
51
|
}
|
50
52
|
```
|
51
|
-
|
53
|
+
このような形で作ったのですが、次のエラーが出てきます。
|
54
|
+
調べてみましたが、解決法がわからず、どのように修正すれば良いか教えていただきたいです
|
55
|
+
```エラーメッセージ
|
56
|
+
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
|
57
|
+
|
58
|
+
at prog2.CalculatorFunc.main(CalculatorFunc.java:43)
|
59
|
+
|
60
|
+
```
|