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

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

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

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

Q&A

解決済

4回答

5127閲覧

文ではありません。のエラーの解決方法を教えてください

kumimaru_

総合スコア7

Java

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

0グッド

0クリップ

投稿2018/05/27 12:39

編集2018/05/27 13:15

javaで、一定の範囲内の奇数をすべて足した合計を出すプログラムです。

文字ではありませんというエラーが出てしまいます。

public static void main(String[] args){ int sum = 0; for(int i =1; i<=10; i+2){ sum = sum+i; } System.out.println("1から10までの範囲での奇数の合計は"+sum+"です。"); }

プログラミング自体始めたばかりなため、自分なりに調べてみたもののわからず質問させていただくことになりました。
どのように訂正すればいいのか教えていただけると幸いです。

【追記】
たくさんの方にご回答いただき感謝しています。
intは、質問時に打ち忘れていました申し訳ないです...
皆さんにいただいた回答を参考にして、再度確認したところ
問題になっていたのは i=i+2 でないといけなかった場所が i+2 と書き込んでいました。
以前インクリメント演算子というのを勉強した時
for(int i=1; i<10;i++){
というコードでも動いたのですがインクリメント演算子を利用する場合は i= の部分はいらないのでしょうか?

また、現在は参考書を利用しています。
質問の方長くなってしまいすいませんm m

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2018/05/27 12:44

はてさて i は何型のオブジェクトだろうね
m.ts10806

2018/05/27 12:49

「自分なりに調べた」という内容をご提示ください。その部分の理解が浅いのか、記事自体の説明が不十分なのかは実際に参考した先を見せてもらえないと分かりません。
m.ts10806

2018/05/27 12:50

既に回答は出てはいますが、変数の型部分についてはきちんと学んでおかないとこれから同様の問題で中々先に進まなくなるので、初学者時期に参考にする先は大事です。
guest

回答4

0

以前インクリメント演算子というのを勉強した時

for(int i=1; i<10;i++){
というコードでも動いたのですがインクリメント演算子を利用する場合は i= の部分はいらないのでしょうか?

i++i = i + 1とかi += 1と同じ意味です(厳密には性質が少々異なりますが、この状況においては同じです)。
i + 2計算をしているだけで命令文ではないため、エラーになります。
仮にこれが通ったとして、計算結果をどこにも代入していないため、実質何もしない文になります。

投稿2018/05/27 13:24

swordone

総合スコア20649

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

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

kumimaru_

2018/05/27 13:29

ありがとうございました。 今まで一つずつ増やすコードの問題しかなかったため、 今回はじめて2以上を足さないといけないということで少し不安に思いながらコードを書いておりました。 諦めずがんばります。
退会済みユーザー

退会済みユーザー

2018/05/27 13:37

確かに「i + 2」は「文ではありません」というコンパイルエラーになりますが、「Math.abs(i + 2)」とするとコンパイルは通ります。「計算をしているだけで命令文ではないため、エラー」になるわけではないようです。
退会済みユーザー

退会済みユーザー

2018/05/27 23:02

コンパイラは結構馬鹿なのでメソッドの中で設定してるか判別できないため
guest

0

for(int i=1; i<10;i++){

というコードでも動いたのですがインクリメント演算子を利用する場合は i= の部分はいらないのでしょうか?

様々な言語で出てきますがi++は
i= i+1;
~~の略です。~~→同じ効果を持ちます。
増減が1ではない場合、変数にその分増減させるような「式」になってないといけません。

投稿2018/05/27 13:25

編集2018/05/27 13:26
m.ts10806

総合スコア80765

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

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

kumimaru_

2018/05/27 13:31

ありがとうございました。 今まで一つずつ増やすコードの問題しかなかったため、 今回はじめて2以上を足さないといけないということで少し不安に思いながらコードを書いておりました。 大変感謝しております。
m.ts10806

2018/05/27 13:36

まあ、あまり1以外を増減させることってあまりないですからね。 i++にして「ループ内においてiが奇数だったら」という判定をかますことがあるので。(その方が「範囲内で利用する」場合には明確になるかと)
退会済みユーザー

退会済みユーザー

2018/05/27 13:50

確かに「i + 2」は「文ではありません」というコンパイルエラーになりますが、「Math.abs(i + 2)」とするとコンパイルは通ります。コンパイラとしては『変数にその分増減させるような「式」になってないといけません』というわけではないようです。
m.ts10806

2018/05/27 13:54

2ab1f83ccd8cさん 補足ありがとうございます。 absは「絶対値を返す」という意味では広義で「式」と言えるかなと。 forでそのような書き方をしなくて試したことがないのですが、「ループの度に増減」行われます?
退会済みユーザー

退会済みユーザー

2018/05/27 14:00

i + 2 は「i に 2 加算したものを返す」という意味では広義で(狭義でも)「式」と言えます。ただコンパイラは何を根拠にOKにしたりエラーにしたりしているのか疑問に思っただけです。
m.ts10806

2018/05/27 21:37 編集

「絶対値を返す」というより「絶対値を求める」が正しい表現でしたね。すみません。 > i + 2 は「i に 2 加算したものを返す」という意味では広義で(狭義でも)「式」と言えます んー微妙なところですね。受取先が必要かどうかの違いかなと。(i+2)としたら意外と通ったりするのかなと思ったりはしましたが。 ただ、文法的にOKか意図したロジックを構築で来ているかは別問題ですもんね。
guest

0

こんにちは

for(i =1; i<=10; i+2){

for(int i =1; i<=10; i += 2){

に変えるとできると思います。

一応、全部のコードを載せておきます。

Java

1public class Main { 2 public static void main(String[] args) throws Exception { 3 // Your code here! 4 int sum = 0; 5 for(int i = 1; i <= 10; i += 2){ 6 sum += i; 7 } 8 System.out.println("1から10までの範囲での奇数の合計は"+sum+"です。"); 9 } 10}

投稿2018/05/27 12:42

編集2018/05/27 12:46
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2018/05/27 12:47

原因は変数のiの方の宣言をしていないところとiを2増やすところをi+2と書いているところです。
退会済みユーザー

退会済みユーザー

2018/05/27 12:48

エラーの原因には関係ないですが、sum = sum + iのところはsum += i;と書くことができます。 (最初sum = 0と初期化しているから)
退会済みユーザー

退会済みユーザー

2018/05/27 12:54

「int」がないとコンパイルしたときに「文ではありません」とか「文字ではありません」というエラーメッセージが表示されますか?
退会済みユーザー

退会済みユーザー

2018/05/27 13:16

intがないとエラーは出ます。
kumimaru_

2018/05/27 13:19

三人の方ご回答ありがとうございました。 Staes1024様の仰る通りintがなかったのと、i+2と表記していたためでした。 ありがとうございました。
退会済みユーザー

退会済みユーザー

2018/05/27 13:22

すみません。問題は i + 2 の方でした。 > javac src\test\Main.java src\stackoverflow\Main.java:12: エラー: 文ではありません for (int i = 0; i <= 10; i + 2) ^
guest

0

ベストアンサー

eclipse や netbeans などの ide をつかうことをおすすめします。

エラーに箇所がわかりやすくしめされますが、場合によっては解決策も示してくれることがあります。

イメージ説明

今回は "i+2 の部分が代入になっていない" とエラーが示されています。
このエラーメッセージから、i = i + 2 や i += 2 などの代入文にしないといけないことが思いつくのでは?

投稿2018/05/27 21:25

katoy

総合スコア22324

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問