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

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

ただいまの
回答率

90.76%

  • Java

    13162questions

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

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

受付中

回答 4

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 281

kumimaru_

score 2

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • asahina1979

    2018/05/27 21:44

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

    キャンセル

  • mts10806

    2018/05/27 21:49

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

    キャンセル

  • mts10806

    2018/05/27 21:50

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

    キャンセル

回答 4

+3

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/27 22:29

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

    キャンセル

  • 2018/05/27 22:37

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

    キャンセル

  • 2018/05/28 08:02

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

    キャンセル

+2

こんにちは

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


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


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

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

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/27 21:47

    原因は変数のiの方の宣言をしていないところとiを2増やすところをi+2と書いているところです。

    キャンセル

  • 2018/05/27 21:48

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

    キャンセル

  • 2018/05/27 21:54

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

    キャンセル

  • 2018/05/27 22:16

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

    キャンセル

  • 2018/05/27 22:19

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

    キャンセル

  • 2018/05/27 22:22

    すみません。問題は i + 2 の方でした。

    > javac src\test\Main.java
    src\stackoverflow\Main.java:12: エラー: 文ではありません
    for (int i = 0; i <= 10; i + 2)
    ^

    キャンセル

+2

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

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/27 22:31

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

    キャンセル

  • 2018/05/27 22:36

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

    キャンセル

  • 2018/05/27 22:50

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

    キャンセル

  • 2018/05/27 22:54

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

    キャンセル

  • 2018/05/27 23:00

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

    キャンセル

  • 2018/05/28 06:34 編集

    「絶対値を返す」というより「絶対値を求める」が正しい表現でしたね。すみません。

    > i + 2 は「i に 2 加算したものを返す」という意味では広義で(狭義でも)「式」と言えます
    んー微妙なところですね。受取先が必要かどうかの違いかなと。(i+2)としたら意外と通ったりするのかなと思ったりはしましたが。

    ただ、文法的にOKか意図したロジックを構築で来ているかは別問題ですもんね。

    キャンセル

+1

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

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

イメージ説明

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.76%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    Javaのwhile文、do while文を使って計算する方法

    プログラム初歩で勉強中のものです。 色々なサイトで調べてもなかったので初歩的な問題ですが、質問させていただきます。 for文の繰り返しは分かるのですが、while文、do wh

  • 解決済

    100になる直前の加算結果出力

    javaで開始値と終了値を入力してその間の偶数を加算していき、合計が100を超えたら「数値が100を超えたため、処理を中止します。」とメッセージを出し、かつ合計が100になる前の加

  • 解決済

    ファイルから読み込み集計する方法

    A:100 B:200 C:300 A:130 B:210 C:330 のようなファイルを読み込み合計を出力するにはどうしたらいいでしょうか? A:230 B:410 C

  • 受付中

    c言語 級数和のプログラミングを教えてください!

    前提・実現したいこと Σ(k=1~n)5k-k^2+1 の級数和を計算し、表示したいのですがなにぶんC初心者のためかってがわかりません。 初心者の私にもわかるような解説を

  • 受付中

    コマンドライン引数から名前と点数を入力して偏差値を計算

    前提・実現したいこと コマンドライン引数から複数人の名前と点数を入力して偏差値を計算し、 名前  名前  名前 点数  点数  点数 偏差値 偏差値 偏差値 の順に表示させたい

  • 解決済

    二桁の数字を一桁にする

    例えば int = 10; ならば1 int = 18; ならば9のように 二桁の数字を一桁の数字にするには プログラミングでどのように表現するべき なのでしょ

  • 解決済

    Javaにおける桁の操作に関して

     前提・実現したいこと AtCoder ABC083B - Some Sumsの問題を解いています。 問題文 1 以上 N 以下の整数のうち、10 進法での各桁の和が A 以上 B

  • 解決済

    最後のカンマを消す方法について教えてください。

     前提・実現したいこと Javaを勉強している者です。 現在、九九の出力を行っています。 出力は「1×1=1,1×2=2・・・1×9=9」改行「2×1=2,・・・」 というように各

同じタグがついた質問を見る

  • Java

    13162questions

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