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

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

ただいまの
回答率

89.21%

配列を2つに増やす方法がわかりません

受付中

回答 3

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 1,695

coffeee

score 19

合計金額を求めるプログラムを作りました↓

class Price{
    int[] price;
    Price(int[] p){
         price=p;
    }
    void getSum(){
       int sum=0;
       for(int i=0;i<price. length;i++)
                  sum += price[i];
       int Sum=sum;
       System.out.println("合計金額は "+Sum+ " 円です");
    }
    public static void main(String[] args){
       int[] money={150,400,200,100};
       Price p=new Price(money);
       p.getSum();
    }
}


これに手を付け加えて
購入代金と購入数を格納する2つの配列にしたいのですが、
下のコードのように書き直してもエラーになりました。

どのようにすればよいでしょうか。
ご回答よろしくお願いいたします。

class Price{
    int[] price;
    Price(int[] p){
         price=p;
    }
class Count{
    int[] count;
    Count(int[] c){
         count=c;
    }
    void getSum(){
       int sum=0;
       for(int i=0;i<price. length;i++)
                  sum += price[i];
       int Sum=sum;
       System.out.println("合計金額は "+Sum+ " 円です");
    }
    void getNumber(){
       int number=0;
       for(int i=0;i<count. length;i++)
                  number += count[i];
       int Numer=number;
       System.out.println("購入数は "+Number+" 個です");
    public static void main(String[] args){
       int[] money={150,400,200,100};
       Price p=new Price(money);
       p.getSum();

       int[] type={3,2,10,1};
       Count c=new Count(type);
       c.getNumber();
    }
}

合計個数を求めようと書き直したものがこちらです↑

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 3

+1

長くなりますので、結論と補足に分けて書きます。

結論

結論を先に言いますと、あなたのコードを(憶測で)修正して
取あえず動作するようにしたものが以下です。

class Price{
    int[] price;
    Price(int[] p){
         price=p;
    }
    void getSum(){
        int sum=0;
        for(int i=0;i<price. length;i++)
                   sum += price[i];
        int Sum=sum;
        System.out.println("合計金額は "+Sum+ " 円です");
     }
    public static void main(String[] args){
        int[] money={150,400,200,100};
        Price p=new Price(money);
        p.getSum();

        int[] type={3,2,10,1};
        Count c= new Count(type);
        c.getNumber();
     }
}

class Count{
    int[] count;
    Count(int[] c){
         count=c;
    }
    void getNumber(){
       int number=0;
       for(int i=0;i<count. length;i++)
                  number += count[i];
       int Number=number;
       System.out.println("購入数は "+Number+" 個です");
    }
}

実行結果は以下です。
ご期待の結果になっているでしょうか?

合計金額は 850 円です
購入数は 16 個です

エラー(と言う言葉であなたが示そうとした出来事(であろうと私が推測した出来事))の原因と思われる
問題点は以下のような点です。

  • getNumber() メソッドの記述が } で閉じていない。

この点を修正しても、いくつものエラーが出ますが、修正の仕方は何種類かあり、それによって出るエラーが変わってくるのでここでは書きません。
コーディング意図が不明なのでどのように修正するべきか判断できないからです、上に示した動作例は私の勝手な憶測にすぎません。

補足

おそらく、あなたは Price.java というファイルをコマンドラインでコンパイルしようとしたか、
Eclipse で作成したのだと予想します。

そして、以下のようなコンパイルエラーが出力されているはずです。
(微妙に環境が違うため、両者でエラーが同じになりません、一例と思ってください)

  • コマンドラインの場合
Price.java:25: エラー: 式の開始が不正です
    public static void main(String[] args){
    ^
Price.java:25: エラー: 式の開始が不正です
    public static void main(String[] args){
           ^
Price.java:25: エラー: ';'がありません
    public static void main(String[] args){
                 ^
Price.java:25: エラー: '.class'がありません
    public static void main(String[] args){
                                     ^
Price.java:25: エラー: ';'がありません
    public static void main(String[] args){
                                         ^
Price.java:34: エラー: 構文解析中にファイルの終わりに移りました
}
 ^
エラー6
  • Eclipse の場合
記述/説明    リソース    パス    ロケーション    タイプ
Number は変数に解決できません    Price.java    /java8_samples/src    行 23    Java 問題
メソッド getSum() は型 Price で未定義です    Price.java    /java8_samples/src    行 27    Java 問題
メソッド main は static として宣言できません。static メソッドは、static またはトップレベル型においてのみ宣言できます    Price.java    /java8_samples/src    行 24    Java 問題
構文エラーがあります。"}" を挿入して ClassBody を完了してください    Price.java    /java8_samples/src    行 33    Java 問題
構文エラーがあります。"}" を挿入して MethodBody を完了してください    Price.java    /java8_samples/src    行 23    Java 問題

あなたが「エラーになりました。」で済ませた事柄は、以下の4つを書かないと
(回答可能な質問として)普通は相手に伝わりません。

1.ソースコード(これはやってあります)
2.このコードをコンパイルした(あるいは自動ビルドがオンの状態でEclipseで入力した)こと(あと出来ればコンパイラのバージョンとオプションの内容)
(もちろん、コマンドラインでコンパイルしたかEclipseを使ったかそれ以外の方法でコンパイルしたかということも)
3.その時にこのようなエラーメッセージが出たこと
4.そのエラーメッセージを見て、自分がどう解釈し質問するに至ったか(あるいは、どこがどう理解できなかったか)

もしも、コンパイラがエラーメッセージを出して、その解決方法を他人に質問するのであれば、
以上の情報をきちんと書いて質問しないと、期待するような回答を得にくいと思います。

ただ、このエラーは、クラスの概念と書式が理解できていて、
エラーメッセージをちゃんと読めば、初心者でも解決できる問題です。
(型=クラスということに思いたらないことはあるかもしれませんが)

もしも、このエラーメッセージと、ご質問に書かれたソースコードを付きあわせて、
修正すべき点を思いつけないとしたら、コンパイラを動かす前に、
入門書なりなんなりに戻って勉強しなおすことをお勧めします。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2016/01/24 18:05

    コマンドプロンプトでコンパイルした結果、
    全く同じエラーが出ました!

    質問方法の仕方など不足しておりました。
    入門書を探してみようと思います。
    貴重なアドバイスありがとうございます!

    キャンセル

0

エラーの原因はおそらく}が足りていないからです。
適切にインデントを下げていけば、足りないことがわかるはずです。

ところで、このコードは無駄に内部クラスを使っていますが、内部クラスを作る必要は無いのでは?
フィールドとして配列を2つ持てばいいだけのはずです。

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2016/01/24 18:02

    ご回答ありがとうございます!
    無駄が多いみたいですね。
    アドバイスを元にもう一度やり直してみます。

    キャンセル

0

coffeeさんはおそらくjavaなのだからオブジェクト指向で書かなければいけないと思われているのかもしれません。その姿勢は将来的には間違ってはいないと思いますが、この規模の処理でしたら無理にオブジェクト指向を利用しない方がシンプルに記述でき、コードの間違いも自分で見つけやすくなるのではないかと思います。

class Count{
       public static void main(String[] args){
           int[] money={150,400,200,100};
           int[] type={3,2,10,1};
           int number = 0;
           int sum = 0;

           for(int i = 0; i < money.length; i++){
               sum += money[i];
           }

           for(int j = 0; j < type.length; j++){
               number += type[j];
           }

           System.out.println("合計金額は "+ sum + " 円です");
           System.out.println("購入数は "+ number + " 個です");

       }
}

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

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

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