質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

1回答

277閲覧

×の計算を行い、結果を右側に送りたい。

yomikaki

総合スコア22

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2022/05/22 08:47

前提

コマンドプロンプトで入力された値の掛け算をして出力するシステムを作成しております。
入力値は2つ以上の値が入ることを想定してListに格納して計算させたいと考えております。
そこでエラーが発生してしまったので解消方法についてご教示いただけますと幸いです。

実現したいこと

×の計算を行い、結果を右側に送りたい。

発生している問題・エラーメッセージ

The left-hand side of an assignment must be a variable

該当のソースコード

Demo.java

1import java.util.ArrayList; 2import java.util.List; 3import java.util.Scanner; 4import java.util.StringTokenizer; 5 6class Demo { 7 public static void main(String[] args) { 8 9 System.out.println("入力:"); 10 // 文字入力の受付 11 Scanner scanner = new Scanner(System.in); 12 scanner.useDelimiter(",|\n"); 13 String line; 14 String token = ""; 15 int i = 0; 16 List<String> StrList = new ArrayList<String>(); 17 List<Double> intList = new ArrayList<Double>(); 18 line = scanner.next().strip(); 19 20 StringTokenizer st = new StringTokenizer(line, "+-*/=", true); 21 while (st.hasMoreTokens()) { 22 token = st.nextToken(); 23 if ("+-/*=".contains(token)) { 24 StrList.add(token); 25 } else { 26 intList.add(Double.valueOf(token)); 27 } 28 } 29 30 i = 0; 31 while (!(StrList.get(i).equals("="))) { 32 if (StrList.get(i).equals("*")) { 33 Double.valueOf(intList.get(i)) = Double.valueOf(intList.get(i)) * Double.valueOf(intList.get(i + 1)); 34 } 35 i++; 36 } 37 System.out.println(line + intList.get(i)); 38 } 39}

試したこと

変数numを宣言して、numに ×の計算結果を代入しましたが、想定結果と異なるため断念しました。

入力:
2×3×2=
出力:
2×3×2=6.0
※期待結果は2×3×2=12.0

Demo.java

1import java.util.ArrayList; 2import java.util.List; 3import java.util.Scanner; 4import java.util.StringTokenizer; 5 6class Demo { 7 8 public static void main(String[] args) { 9 System.out.println("入力:"); 10 // 文字入力の受付 11 Scanner scanner = new Scanner(System.in); 12 scanner.useDelimiter(",|\n"); 13 String line; 14 double num = 0.0; 15 String token = ""; 16 int i = 0; 17 List<String> StrList = new ArrayList<String>(); 18 List<Double> intList = new ArrayList<Double>(); 19 line = scanner.next().strip(); 20 21 StringTokenizer st = new StringTokenizer(line, "+-*/=", true); 22 while (st.hasMoreTokens()) { 23 token = st.nextToken(); 24 if ("+-/*=".contains(token)) { 25 StrList.add(token); 26 } else { 27 intList.add(Double.valueOf(token)); 28 } 29 } 30 31 i = 0; 32 while (!(StrList.get(i).equals("="))) { 33 if (StrList.get(i).equals("*")) { 34 num = 35 Double.valueOf(intList.get(i)) * Double.valueOf(intList.get(i + 1)); 36 } 37 i++; 38 } 39 System.out.println(line + num); 40 } 41} 42

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jimbe

2022/05/22 09:42

「右側」とは何でしょう。
guest

回答1

0

The left-hand side of an assignment must be a variable
代入の左辺は必ず変数でなければならない

左辺のDouble.valueOf(intList.get(i))は式なので、変数を指定しろということ。なので、たとえばsetをつかってこうする。

diff

1 while (!(StrList.get(i).equals("="))) { 2 if (StrList.get(i).equals("*")) { 3- Double.valueOf(intList.get(i)) = Double.valueOf(intList.get(i)) * Double.valueOf(intList.get(i + 1)); 4+ intList.set(i, Double.valueOf(intList.get(i)) * Double.valueOf(intList.get(i + 1))); 5 } 6 i++; 7 }

このままだとコンパイルは通るけれど、まぁ、たぶん、実行するとまた別の問題が発生しますけれど。

投稿2022/05/22 10:48

shiketa

総合スコア3971

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問