練習問題で解答が理解出来ない

このQ&Aのポイント
  • 練習問題で解答が理解できず困っています。
  • 購入した練習問題でドリルの内容が理解できません。
  • CalcクラスのメソッドcalcArr内の一部の行が理解できません。
回答を見る
  • ベストアンサー

練習問題で解答が理解出来ない。

練習問題で解答が理解出来ない。 書店で購入したドリルの練習問題です。 次の仕様を持つCalcクラスを定義しなさい。 ・フィールドなし ・int型の配列を引数に持つメソッドcalcArr    引数の配列値を2乗して別の配列に格納し、それを戻り値とする public class Calc { int[] calcArr(int[] data){ int[] r =new int[data.length]; ←この行がわかりません。 for(int i=0; i<data.length; i++) r[i]=data[i]*data[i]; return r; } } なんと質問して良いか文章に出来ないのですが、 この行がわからなくて、すみませんが、 教えて頂きたく御願い致します。

  • Java
  • 回答数4
  • ありがとう数14

質問者が選んだベストアンサー

  • ベストアンサー
  • BellBell
  • ベストアンサー率54% (327/598)
回答No.3

int[] calcArr(int[] data){ 上記の行は理解できますか? ()内で書かれているのは、引数としてintの配列が、dataという名前で渡されます。 new int[data.length] intの配列を新しく作成。 配列の個数はdata.length、つまり引数で渡された配列と同じ個数で作成。 int[] r = 作成した配列を、rという名前の変数に格納する。 一応念のため最初に戻って int[] calcArr(int[] data){ 行頭のint[]は、戻り値としてintの配列を返すよってこと。 あとは課題内容の >引数の配列値を2乗して別の配列に格納し、それを戻り値とする って部分ですね。

NEWYORKERS
質問者

お礼

御回答ありがとうございました。 おかげ様でやっと理解出来ました。 御指導有難う御座います。 実は、配列を使ったコードで、new を使うときと使わないときの区別がわかりません。 下記のようにnewがないときもある。 public class Samp { public static void main(String[] args) { String[]str ={"レッド","イエロー","ブルー"}; for(int i=0; i<str.length; i++){ System.out.println(str[i]); } } } newを使うのかどうかはどうやって判断すればよいか、 教えて頂きたく、宜しく御願い申し上げます。

その他の回答 (3)

  • chie65535
  • ベストアンサー率43% (8512/19350)
回答No.4

>実は、配列を使ったコードで、new を使うときと使わないときの区別がわかりません。 「関数を抜けたあと、配列を残すか、残さないか」で決まる。 int[] calcArr(int[] data){  int[] r =new int[data.length];  return r; } の場合、関数を抜けた時(returnした時)に「rがnewされたまま」になって居ないと「関数の呼び出し元」で結果として返ってきた配列を利用できない。 public static void main(String[] args) {  String[]str ={"レッド","イエロー","ブルー"};  for(int i=0; i<str.length; i++){   System.out.println(str[i]);  } } の場合、strは「関数から抜けたら不要」になるので「関数から抜けた瞬間、自動的に消えて欲しい」から「newを付けないで宣言」する。

NEWYORKERS
質問者

お礼

御回答ありがとうございました。 納得出来ました。本当にありがとうございました。

  • chie65535
  • ベストアンサー率43% (8512/19350)
回答No.2

data.length個の要素を持つintの配列を動的に確保して、それをintの配列rに割り当てている

NEWYORKERS
質問者

お礼

御回答有難う御座います。 実際に画面表示させてみて見たいので、コードを書き直して 改めて、質問させて頂きます。 御指導有難う御座いました。

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

戻り値用のint配列rを、引数dataと同じ長さで作成しています。

NEWYORKERS
質問者

お礼

御回答ありがとうございました。 今、画面表示するように、コードを書き直して 改めて、質問させて頂きます。 御指導有難う御座いました。

関連するQ&A

  • 下記のメソッドを使って答えが画面表示されるようにしたいです。

    下記のメソッドを使って答えが画面表示されるようにしたいです。 それには、どうコードを書けばいいでしょうか。 宜しく御願い申し上げます。 public class Calc {   int[] calcArr(int[] data){    int[] r =new int[data.length];      for(int i=0; i<data.length; i++)        r[i]=data[i]*data[i];         return r; }

    • ベストアンサー
    • Java
  • この問題を解きましたが解答があっているのかわかりません。また違う解答があれば参考に教えてください。

    ます目の表現に MAX_R x MAX_C の 2 次元配列を用いているが、この配列を初期化するとき、関数 initboard() では、 void initboard(int board[][MAX_C]) { ... } と引数を2次元配列として定義している。この引数の定義を void initboard(int brd[]) { ... } と定義したとすると、関数 initboard() はどのように書けばよいか答えよ。 解答には関数 initboard() のみを記述すること。 私の解答 void initboard(int brd[]) { int i,j; for(i=0;i<;i++) for(j=0;j<;j++) brd[i][j]=EMPTY; } です。

  • Java問題 できればソースコードを教えて下さい。

    <フィールド> ・private int id :識別用の番号(受験番号や学籍番号のようなもの) ・private int point :得点 <コンストラクタ> ・引数が2個(番号, 得点)のコンストラクタのみを作成する. <メソッド> ・public void show() : フィールドの内容を1行で表示する. 形式は,「番号:○○○○,氏名:○○○○」とする. 引数と戻り値は無し. ・public int getID() :idのゲッター(引数は無し,戻り値は id) ・public int getPoint() :pointのゲッター(引数は無し,戻り値は point) 何人分のデータを保存するのかをユーザーに質問して回答を得る. (2) 指定された人数分の Student クラスの配列を準備する. (3) 指定された人数分のデータを入力する. (4) すべてのデータをループとshow()を利用して出力する. (5) 最高得点,最低得点,平均点も算出して表示する. ※平均点の計算は,割り算を行う前に double 型にキャストすることを忘れずに お願いします

  • どこがエラーか確認してください…

    プログラムを作ったのですが、さまざまなエラーが出てしまいます。 与えた引数を数字と文字にわけるというプログラムです。 public class Selection { private static final char[] nch = { '0' '1' '2' '3' '4' '5' '6' '7' '8' '9' };//0から9までの数字をchar型配列要素として定義 public static String numbersonly(String inputstr) { StringBuffer bfn = new StringBuffer(); for (int i = 0 ; i < inputstr.length(); i++) { for (int j = 0;j < nch.length() ; j++) { if(inputstr.charAt(i) == nch[j]) bfn.append(inputstr.substring(i)); //bfnにinsputstrのi番目の文字を付け足す } } return; bfn.toString(); //bfnをstring型に変えて戻り値 } //numbersonlyメソッドの場合と同様に以下も補う public static String lettersonly(String inputstr) { StringBuffer bfn =new StringBuffer(); boolean let; for (int i = 0; i < inputstr.length(); i++) { let = true; for(int j = 0; j < nch.length(); j++) { if(inputstr.charAt(i) == nch[j]) let =false; } if (let)bfn.append(inputstr.substring(i)); } return;bfn.toString(); } } はじめのchar型配列要素として定義するところでシンボルを解決できません、となっているので、そのほかのnchを使う部分(lengthメソッド、戻り値)にも影響が出ているのか、jのlengthメソッドもどちらともシンボル解決できず、それぞれreturnでは戻り値がありません、となります。

    • ベストアンサー
    • Java
  • クラスやメソッドが理解できません

    今javaを勉強中なのですが、クラスやメソッドで生きず待ってしまいました。 メソッドの定義は 戻り値の型 メソッド名(引数リスト) {  文;  ・・・ return 式;  } ですが、メソッドから返されえる値を戻り値といますよね?呼び出し元に値を返すってどういうことなのでしょうか? int getNum() { System.out.println("調べました") return num; } たとえば、上記のようなものですが。もしも、このメソッドを呼び出すと、”戻り値”が戻ってくるわけですが、これはgetNumという変数のなかに計算式が入っている?という考え方でいいのでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • Java
  • プログラム初心者で以下の問題が解けません。どのような解答になりますか?

    配列を初期化するとき、関数 initboard() では、 void initboard(int board[][MAX_C]) { ... } と引数を2次元配列として定義している。この引数の定義を void initboard(int brd[]) { ... } と定義したとすると、関数 initboard() はどのように書けばよいか。 解答は関数 initboard() のみを記述。 私は void initboard(int brd[]) { int i,j; for(i=0;i<;i++) for(j=0;j<;j++) brd[i][j]=EMPTY; } としましたが間違ってるみたいです…

  • 問題の解説お願いします。(オーバーロード&オーバーライド)

    class A{ protected int method1(int a , int b){ return 0; } } クラスAを継承したクラスで同時に定義できるメソッド が、 public int method1(int a,int b){return 0;} が良くて private int method1(int a,int b){return 0;} static protected int method1(int a,int b){return 0;} がだめな理由がいまいちわかりません。 法則みたいなものにこう書いてありました。 (オーバーロードについて) 同一クラス内に同一名称のメソッドを定義することができます。 ただし、それらは引数が異なるものでなければならず、 アクセス制御修飾子や戻り値の型だけが異なるメソッドは 定義することができません。 (オーバーライドについて) サブクラスでは、スーパークラスに存在するメソッドと同一引数・ 同一戻り値型を持つメソッドを定義することが許されています。 これら以外にも何か決まりがあるのでしょうか よろしくお願いします。

    • ベストアンサー
    • Java
  • Constellation

    初めての投稿です。よろしくお願いいたします。 いきなりで申し訳ございませんが、授業で下記の課題が出されました。自分なりに考えたのですが、さっぱりでしたので、是非ご教授願いたいと思います。 配列に格納された座標を使って星座を描くアプレットを作成しましょう。 次のようにX座標値の配列bdXとbdYを定義し,i番目の星の座標を(bdX[i],bdY[i])で表します。 int bdX[] = {55, 75, 115, 115, 135, 155, 195}; int bdY[] = {35, 15, 35, 75, 95, 115, 135}; 引数で与えられた配列データをもとに星座を描くvoid型のdrawConstellationメソッドを定義しましょう。 drawConstellationメソッドの引数は,描画領域を指定するGraphics型のg,星座のX座標値の配列を指定するint型配列のxarrayと,星座のY座標値の配列を指定するint型配列のyarrayです。drawConstellationメソッドは,各座標の点を中心にして文字「★」を描き,各点を線で結びます。

    • ベストアンサー
    • Java
  • 【JAVA】配列の要素の平均について

    JAVAで質問となります。 以下のプラグラムを教えていただきたいです。 ____________________ n 個の要素で構成される int 型の配列を引数として受け取り,配列内の全要素の平均値を返すメソッドを作成してください. また,コマンドライン入力に整数値を入力すると,作成したメソッドを使用して,入力した整数値の平均値を求め,結果を標準出力に出力するプログラムを作成してください. このプログラムを作成する際は,以下の要件を満たすように作成してください:  【メソッド】 配列内の全要素の平均値を求めるメソッドは,以下の仕様とする: メソッド名:calcAverage 引数:配列 - int 型の配列 戻り値:平均値 - double 型 内容:引数として受け取った配列のすべての要素の平均値を計算する.  【入力】 整数値のデータは,コマンドライン入力に入力する. その際,各整数値は,半角スペースで区切る.  【出力】 コマンドライン入力に1つ以上の整数値が入力された場合は,それらの平均値を出力する. コマンドライン入力に何も入力されなかった場合は,何も出力しない. 平均値の出力は,全体を左詰めで小数点以下2桁まで出力する. 行の先頭には空白を入れず,行の左端から出力する.

  • プログラミングお願いします(JAVA)

    クラスCalcに、次の5つのメソッドを作成しなさい。メインメソッドでオブジェクトを生成し、メソッドを呼び出して、実行しなさい。 二つの整数を引数にもち、その和を戻り値とする wa (メソッド名はwaであることに注意!以下同様。) 二つの整数を引数にもち、その差を戻り値とする sa 二つの整数を引数にもち、その積を戻り値とする kake 二つの整数を引数にもち、その大きい方を戻り値とする max 二つの整数を引数にもち、その小さい方を戻り値とする min した自分が実行したプログラムです。ここまでしかわからないので簡単にお願いします class Calc { int wa; int sa; int kake; int max; int min; int num; int num1; int getWa() { System.out.println("和を調べました"); return num+num1; } int getSa() { System.out.println("差を調べました"); return sa; } int getKake() { System.out.println("積を調べました"); return kake; } int geMax() { System.out.println("大きいほうを調べました"); return max; } int getMin() { System.out.println("小さいほうを調べました"); return min; } void setwasakakemaxmin(int w,int s ,int k,int ma,int mi) { wa=w; sa=s; kake =k; max=ma; min=mi; System.out.println("和を"+wa+"差を"+sa+"積を"+kake+"大きいほうを"+max+"小さいほうを"+min+"にしました"); } } class Sample3 { public static void main(String[] args)throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); Calc car1=new Calc(); String str=br.readLine(); int num = Integer.parseInt(str); String str1=br.readLine(); int num1 = Integer.parseInt(str1); int wa=num+num1; int wa =car1.getWa(); Calc car1 =new Calc(); car1.setWaSaKakeMaxMin(1,2); int wa =car1.getWa(); int sa =car1.getSa(); int kake=car1.getKake(); int max =car1.getMax(); int min=car1.getMin(); System.out.println("Birthdayを調べたところ"); System.out.println("和は"+wa+"差"+sa+"積は"+kake+"大きいほうは"+max+"小さいほうは"+min+"でした"); } }

専門家に質問してみよう