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

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

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

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

Q&A

解決済

3回答

52455閲覧

インスタンス化の後に出現してしまう構文エラー Eclipse Identifier・構成の位置が間違っています

R.lawliet

総合スコア41

Java

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

0グッド

0クリップ

投稿2015/04/14 06:55

編集2015/04/14 07:21

いつもお世話になっております。
現在メソッドのオーバーロードの問題を解いております。

恐らくプロの皆様からすると笑ってしまう様なレベルのミスだと思うのですが、
どうしても構文エラーを消すことが出来ず悩んでおります。

どうかご指摘のほど、よろしくお願いします。

以下問い
エラー箇所★

/*【オーバーロード3】
SubOverload03クラスに2つのメソッドを実装して下さい。
①メソッド名:methodA 戻り値:なし 引数:int
②メソッド名:methodA 戻り値:なし 引数:int,int

[実行結果]
今日の天気は:晴れ
今日の天気は:曇り時々雨*/

lang

1public class test { 2 3 public static void main(String[] args) { 4 } 5 //インスタンス化 6 SubOverLoad03 sub1 = new SubOverLoad03(); 7 //コンストラクタ呼び出し 8 sub1.SubOverLoad03(); 9//★トークン "SubOverLoad03" に構文エラーがあります。このトークンの後には Identifier を指定する必要があります 10 11 //表示メソッド呼び出し 12 sub1.methodA(0); 13//★トークンに構文エラーがあります。構成の位置が間違っています 14 sub1.methodA(1, 2); 15//★トークンに構文エラーがあります。代わりに ConstructorHeaderName を指定する必要があります 16} 17 18class SubOverLoad03{ 19 20 private String[] weather; 21 //フィールド 22 public SubOverLoad03(){ 23 weather = new String[3]; 24 weather[0] = "晴れ"; 25 weather[1] = "曇り"; 26 weather[2] = "雨"; 27 } 28 // ①メソッド名:methodA 戻り値:なし 引数:int 29 public void methodA(int num1) { 30 System.out.println("今日の天気は:" + weather[num1]); 31 } 32 33 // ②メソッド名:methodA 戻り値:なし 引数:int,int 34 public void methodA(int num2,int num3) { 35 System.out.println("今日の天気は" + weather[num2] + "時々" + weather[num3]); 36 } 37} 38

尚、該当箇所を削除した時に関連項目のエラーは出てきません。
つまり、紐付けが上手くいってないのだろうな、と勝手に解釈しています。

申し遅れましたが、Eclipseを用いて書いております。

追記:ご指摘頂いたエラーの修正中に気づいたのですが、
コンストラクタは呼び出すものでは無いので、
上のクラス部分はコンストラクタの呼び出しの項目は削除ですね。

lang

1public class test { 2 3 public static void main(String[] args) { 4 //インスタンス化 5 SubOverLoad03 sub1 = new SubOverLoad03(); 6 //コンストラクタ呼び出し 7 ★↑要らない。 8 9 //表示メソッド呼び出し 10 sub1.methodA(0); 11 sub1.methodA(1, 2); 12 } 13}

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

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

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

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

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

guest

回答3

0

ベストアンサー

「インスタンス化」以下の部分は、main関数の中、つまり下記の{ }の中に書きます。

lang

1public static void main(String[] args) { 2}

投稿2015/04/14 07:01

argius

総合スコア9390

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

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

R.lawliet

2015/04/14 07:05

なんとまぁ笑 mainが早速閉じられていたのですね。 ちょっと疲れているのかもしれません・・・ やっとエラーから脱出出来ました。 迅速な回答をありがとう御座いました><
guest

0

mainがすぐに閉じてしまっています。
以下のコードはmainの中に書いてください。

lang

1 SubOverLoad03 sub1 = new SubOverLoad03(); 2 sub1.SubOverLoad03(); 3 sub1.methodA(0); 4 sub1.methodA(1, 2);

以下、修正後

lang

1 public static void main(String[] args) { 2 //インスタンス化 3 SubOverLoad03 sub1 = new SubOverLoad03(); 4 //コンストラクタ呼び出し 5 sub1.SubOverLoad03(); 6 7 //表示メソッド呼び出し 8 sub1.methodA(0); 9 sub1.methodA(1, 2); 10 }

投稿2015/04/14 07:03

runun

総合スコア305

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

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

R.lawliet

2015/04/14 07:11

修正後のコードまでありがとう御座います。 今回は一番最初に回答して頂いた方にベストアンサーを送らせて頂きました。
guest

0

lang

1 public static void main(String[] args) { 2 }

メソッドの外であることが原因です。

lang

1SubOverLoad03 sub1 = new SubOverLoad03();

がコンパイルエラーにならないのはインスタンスフィールドとその初期化と解釈されたためです。

投稿2015/04/14 07:02

nagise

総合スコア87

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

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

R.lawliet

2015/04/14 07:09

なるほど、後続のメソッドがコンストラクタとして扱われて困っていたのですが理由がわかりました! いつも的確な回答をありがとう御座います♪ アンサーが一番分かりやすかったのはnagiseさんでしたが、 今回は一番最初に投稿していただいた方にベストアンサーをお渡ししました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問