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

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

ただいまの
回答率

88.58%

式の開始が不正ですと出てしまう。

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 13K+

shou_hitotose

score 40

先程も質問させていただいたJavaの初心者で自己紹介プログラムを書いているものです。先ほど質問させていただいたプログラムをメソッドをもちいて完結にしようとしたのですが、タイトルの通り式の開始が不正です。というエラー文が出てしまいます。このエラー分についていろいろと調べてみたのですがそれぞれで言ってる内容が違い初心者の私には何が正解かわかりませんでした。

コード
class DateOfBirth {

    int birth_year;
    int birth_month;
    int birth_date;
    boolean known;

}
class Myfriend {

    String name;
    DateOfBirth the_date_of_birth;
    String phone_number;

}
class Person {
    String name;

    DateOfBirth the_date_of_birth;
    String phone_number;
    int n_of_friends;
    Myfriend[] friend;

}

class ex6_2 {
    public static void main(String args[]) {
        Person person_one;
        Person person_two;
        person_one = new Person();
        person_two = new Person();

        /* for protection of personal data, pseudo values are used */
        person_one.name = "A";
        person_one.the_date_of_birth = new DateOfBirth();
        person_one.the_date_of_birth.known = true;
        Birth birth_year1=new Birth();

        birth_year1.birthday(2004,3,3);


        person_one.phone_number = "080-1234-5678";

    person_two.name = "Adolf Brain Charles David Frederic John";
        person_two.the_date_of_birth = new DateOfBirth();
        person_two.the_date_of_birth.known = true;
    Birth birth_year2=new Birth();
    birth_year2.birthday(2004,1,23);
        person_two.phone_number = "090-8765-4321";

        /* person_one believes that the 'person_two' is a friend */
        person_one.n_of_friends = 1;
        person_one.friend = new Myfriend[1];
        person_one.friend[0] = new Myfriend();
        person_one.friend[0].name = person_two.name;
        person_one.friend[0].the_date_of_birth = new DateOfBirth();
        person_one.friend[0].the_date_of_birth.birth_year
            = person_two.the_date_of_birth.birth_year;
        person_one.friend[0].the_date_of_birth.birth_month
            = person_two.the_date_of_birth.birth_month;
        person_one.friend[0].the_date_of_birth.birth_date
            = person_two.the_date_of_birth.birth_date;
        person_one.friend[0].the_date_of_birth.known
            = person_two.the_date_of_birth.known;
        person_one.friend[0].phone_number = person_two.phone_number;

        /* however, person_two does not think so. */
        person_two.n_of_friends = 0;

        /* print the input data */
        print_personal_info(person_one);
        print_personal_info(person_two);
    }
    static void print_personal_info(Person p) {
        int i;

        System.out.print("NAME: " + p.name + "\n");

        System.out.print("Number of friends = " + p.n_of_friends + "\n");
        for( i = 0; i < p.n_of_friends; i++ ) {
            System.out.print("Name of friend " + i
                             + ": " + p.friend[i].name + "\n");
            if( p.friend[i].the_date_of_birth.known == true ) {
                System.out.print("Date of Birth: "
                                 + p.friend[i].the_date_of_birth.birth_year
                                 + " "
                                 + p.friend[i].the_date_of_birth.birth_month
                                 + " "
                                 + p.friend[i].the_date_of_birth.birth_date
                                 + "\n");
            } else {
                System.out.print(" Date of birth is unknown.\n");
            }
}
        static void birthday(int year,int month,int day){
        System.out.print("Date of Birth: " + this.year
                         + " " + this.month
                         + " " + this.day + "\n");
}




}


(実行結果)
ex6_2.java:96: エラー: 式の開始が不正です
static void birthday(int year,int month,int day){
^
エラー1個

このようになってしまいます。public ,privateなどいろいろと試したのですが結局なにが悪いのかがわかりませんでした。回答および意見をいただけると幸いです。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 2

+3

ソースの中身は読んでませんが

 static void print_personal_info(Person p) {


が閉じられてないからじゃないですか。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/11/08 15:17

    すみません、不慣れなもので。ご指摘ありがとうございます。

    キャンセル

  • 2018/11/08 15:25

    なんとか式の開始が不正です。を乗り越えることができました。しかし、今度はまた別のエラーが出てしまい今また少し考えたいと思います。

    キャンセル

  • 2018/11/08 15:27

    2回でてしまいました。すみません。とりあえず今回はご回答頂きありがとうございます。

    キャンセル

checkベストアンサー

+1

kunaiさんも言う通り、メソッドが正しく閉じられていません。

    static void print_personal_info(Person p) {
        int i;

        System.out.print("NAME: " + p.name + "\n");

        System.out.print("Number of friends = " + p.n_of_friends + "\n");
        for( i = 0; i < p.n_of_friends; i++ ) {
            System.out.print("Name of friend " + i
                             + ": " + p.friend[i].name + "\n");
            if( p.friend[i].the_date_of_birth.known == true ) {
                System.out.print("Date of Birth: "
                                 + p.friend[i].the_date_of_birth.birth_year
                                 + " "
                                 + p.friend[i].the_date_of_birth.birth_month
                                 + " "
                                 + p.friend[i].the_date_of_birth.birth_date
                                 + "\n");
            } else {
                System.out.print(" Date of birth is unknown.\n");
            } // <- ここはif-elseの閉じかっこで、まだfor文の中。当然print_personal_infoの途中
        // ↓つまりこれは「メソッドの中にメソッドを定義している」状態のため、エラーが出ている。
        static void birthday(int year,int month,int day){
        System.out.print("Date of Birth: " + this.year
                         + " " + this.month
                         + " " + this.day + "\n");
}

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/11/08 15:22

    ご指摘ありがとうございます。ご指摘どおり閉じましてなんとか指揮の開始が不正ですとは表示されなくなりました。

    キャンセル

  • 2018/11/08 15:24

    ただそのあとでシンボルが見つけられないなど新たなエラーが発生しこれはまた考えたいと思います。また質問をこのこーどで書いてしまうかもしれませんがそのときはまた助言してくださると幸いです。今回はありがとうございました。

    キャンセル

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

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

関連した質問

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