🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Java

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

Q&A

解決済

2回答

573閲覧

エラーの原因を教えてください。

tomo0122

総合スコア4

Java

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

0グッド

1クリップ

投稿2021/03/06 04:22

public class Test{ public static void main(String[]args){ int answer1 = 3 + (7 % 4) / 2; System.out.println(answer1); int calc2 = 10 ; int answer2 = ++calc2; System.out.println(calc2); System.out.println(answer2); int calc3 = 10 ; int answer3 = calc3++; System.out.println(calc3); System.out.println(answer3); int calc4 = 10; int answer4 *= calc4 + 1; System.out.println(calc4);   System.out.println(answer4); System.out.println("1" + "6"); } }

【エラー表示】
Test.java:17: エラー: ';'がありません
int answer4 *= calc4 + 1;
^
Test.java:17: エラー: 文ではありません
int answer4 *= calc4 + 1;
^
エラー2個

int calc4 = 10;
int answer4 *= calc4 + 1;
ここの部分のエラーだと思うのですが
これは変数answer4には何も数値が入っていないので
エラーになるのでしょうか。

YouTubeの動画のまま記述して
演習として「どのようなデータが画面に表示されるでしょうか。」
と言われているのでエラーになるはずはないと感じております。

原因を教えてください。
宜しくお願い致します。

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

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

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

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

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

m.ts10806

2021/03/06 04:39

>エラーになるはずはないと感じております。 全角スペース入ってる時点でエラーにならないはずがないです
Daregada

2021/03/06 04:46

参考にしているYouTubeの動画のリンクを載せてください。
swordone

2021/03/06 04:47

前の質問に対する私の回答をよく読んでください。
Zuishin

2021/03/06 05:18

> YouTubeの動画のまま記述して もし本当にそのままだとしたら、動画が間違っています。
amiya

2021/03/06 12:04

(そもそも、内容的にa++と++aとa+1を比較したいって内容だろうから、そこに*=が紛れ込むこと自体おかしいと思う…)
amiya

2021/03/06 16:42 編集

はい。間違ってます。 YouTube動画を作るような人が間違うはずがないんだ!と叫んだところで、実際にエラーになるのですから、どうしようもありません。 というより、コメントにも、 『初心者です。Ex1_06_1のanswer4の初期値は設定しないとエラーにはならないのですか? answer4=answer4*calc4の場合はどのように解釈すれば良いのでしょうか?宜しくお願いします。』 「ご指摘ありがとうございます! こちらおっしゃるとおりで、正しくは「intanswer4 = calc4 + 1;(「*」が不要)」という問題でした。誤記により混乱を与えてしまって申し訳ございません。」 と、書かれてますね。
tomo0122

2021/03/06 17:05

確認できました。 問題が解決できすっきりしました。 ありがとうございます。
guest

回答2

0

ベストアンサー

なぜエラー表示が出てしまうのか教えてください。

こちらで解決したのではないのでしょうか?

int answer4 *= calc4 + 1;

これは、型で始まっているので宣言文です。
宣言文に使用可能な文法は、
型名 変数名;
型名 変数名 = 式;
もしくは、変数名以降の繰り返しや、配列関係の記述があります。

型名 変数名 *= 式;
というような宣言文の形式はありません。

その為、コンパイラは、
型名 変数名と続いたからこれは宣言文だな。
その次に来るトークンは、=でも,でも無いから、宣言文はここで終わりだな。
終わりなのに;が来ていないのはおかしいぞ。
型名 変数名;
の間違いではないのか?
Test.java:17: エラー: ';'がありません

前半は、型名 変数名;の間違いだとして、その続きは…
*= 式;
なんだこれ?*=で始まるなんて文になってないぞ?
Test.java:17: エラー: 文ではありません
という反応になります。

(少し訂正しました(コンパイラがそんな人間的に考えるはずがなかった^^;))

もし、疑わしい場合こちらで確認してみてください。
Java言語規定 文法 - Y-ADAGIO
14.3 局所変数宣言文
のところが今回該当する文法ルールになります。

投稿2021/03/06 11:49

編集2021/03/06 12:16
amiya

総合スコア1218

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

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

0

int answer4 *= calc4 + 1;

もしかして、
int answer4 *= (calc4 + 1);
というつもりでしょうか。

それでも、この記述なら、エラーになってしまいますが。

と言われているのでエラーになるはずはないと感じております。

ホンマにそのとおりなら、それは捨てましょう

投稿2021/03/06 04:39

y_waiwai

総合スコア88038

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問