以前までc#をやっていたのですが、基礎を理解するためにjavaを初めて1.2週間くらいです。(学校で習い始めたから移行した理由もあります。)
そう言うわけで教科書に記載されていた問題を解いていたときの話です。
教科書の問題文
「nyusyutuの値が0ならば入庫を表し、在庫数(zaikosu)を1増やす。nyusyutuの値が1ならば出庫を表し、在庫数(zaikosu)を1減らす。nyusyutuの値は、0か1しかないものとする。」
教科書曰くただのifをかけというもので、大雑把な説明になって自分でどうやって写すかとか決めて構文を書いてみました。
import java.util.Scanner; public class test{ public static void main(String[]args){ int z = 0; //在庫数変数の宣言 int n; //入出の変数の宣言 Scanner key = new Scanner(System.in); System.out.println("0か1の値を入力してください:"); System.out.println("0...入庫"); System.out.println("1...出庫"); int x = key.nextInt(); if(x == 0){ ++z; System.out.println("商品が一つ入庫されました"); }else{ --z; System.out.println("商品が一つ出庫されました"); } } }
これはエラーが出ずに行えた最終に至った構文です。
最初はそもそもelseのifエラーが出て、調べて行くうちにif文が2行に渡るときはブロックをつけないといけないことを知りましたが、システムアウトプリントの後にデクリメントの処理を書いていました。
そうすると、zのシンボルの場所なんたらかんたらのエラーが発生してしまいました。
↑
そもそもこのエラーがなんなのかわかりませんが、なんとなく場所とシンボル zとあったので、ブロック内に入れたから認識できてないのかな?って勝手に思って、プリント内に入れれば解決すると思って、プリントラインの後に++z;--z;の処理をプラスしてできたと思ったのですが、それもプリントされて表示されることを忘れていました。もう治すとこないなと思いながら試しに上の構文のようにプリントアウトする前にデクリメントの処理を入れてみた結果思い通りの結果ができました。
問題が解決できたのはいいのですが、どうせデクリメントの処理は見せないのだから、なぜ?アウトプリントの処理の後に書くとエラーが出るのだろう?と思いました。
もともとそういうルールがあって上でその事実をzのシンボルの場所なんたらかんたらのエラーでパソコンが教えてくれていたのに自分のエラー認識が間違っていたのか?
そのほかの原因なのか?
どの原因であれ、そのエラーの内容とインクリメント・デクリメント演算子を利用するときに当たる注意など使用などをご存じの方がいましたら、それも教えていただきたく質問をさせていただきました。
少しわかりづらい文となっていますが、随時指摘をいただければ幸いです。
エラーをはっきり明記してくださいという指摘がございました。ありがとうございます。
しかし構文が完了しておりエラーのない状態でした。質問時の時のエラーを再現するために同じと思われるような構文を変えたのですがどうも、成功したみたいです。ちなみに成功した構文は以下のようです。
import java.util.Scanner; public class test{ public static void main(String[]args){ int z = 0; //在庫数変数の宣言 int n; //入出の変数の宣言 Scanner key = new Scanner(System.in); System.out.println("0か1の値を入力してください:"); System.out.println("0...入庫"); System.out.println("1...出庫"); int x = key.nextInt(); if(x == 0){ System.out.println("商品が一つ入庫されました"); ++z; }else{ System.out.println("商品が一つ出庫されました"); --z; } } }
先程までの質問では、インクリメント・デクリメント演算子の位置がエラー発生の原因だと思っていましたが違うみたいです。
どうしてもモヤモヤを改善したくエラーが発生していた構文を再現しよう試みたとしたのですが、できませんでした。発生していたエラーは「シンボルを見つけられませんでした。」というものです。
少し質問を変えて、多分このシンボルを見つけられませんでしたというエラーは、具体的なエラーの時の構文がないと具体的なエラーの要所部分を回答できないと思いますので、簡単でいいですのでこのエラー自体の簡単な概要をわかる範囲でお願いします。
回答1件
あなたの回答
tips
プレビュー