質問するログイン新規登録

質問編集履歴

2

質問の変更

2021/05/27 14:33

投稿

NASKA--
NASKA--

スコア21

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<String,DoubleUnaryOperator> ();
10
+ HashMap<String,DoubleUnaryOperator> optable = new HashMap<> ();
11
11
  void run() {
12
- optable.put("+", (x, y) -> {(x+y)});
12
+ optable.put("+",(x,y) -> {return x+y;});
13
- optable.put("-", (x, y) -> {(x-y)});
13
+ optable.put("-",(x,y) -> {return x-y;});
14
- optable.put("*", (x, y) -> {x*y});
14
+ optable.put("*",(x,y) -> {return x*y;});
15
- optable.put("/", (x, y) -> {x/y});
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).Double.parseDouble(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
- Exception in thread "main" java.lang.Error: Unresolved compilation problem:
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
- at prog2.CalculatorFunc.main(CalculatorFunc.java:43)
68
+ - 構文エラーがあります。";" を挿入して BlockStatements を完了してください
59
-
69
+ - 構文エラーがあります。"AssignmentOperator Expression" を挿入して Assignment
70
+ を完了してください
60
71
  ```

1

プログラムの加筆

2021/05/27 14:33

投稿

NASKA--
NASKA--

スコア21

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,?? > optable = new 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
+ ```