質問するログイン新規登録
Java

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

Q&A

解決済

2回答

5368閲覧

[JAVA]インスタンス化して原点からの距離を返したいです。

show76

総合スコア11

Java

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

1グッド

1クリップ

投稿2020/01/12 10:18

編集2020/01/12 14:09

1

1

実現したいこと
引数で受け取るPointの、原点からの距離を返す

pointクラス
Practiceクラス
mainメソッド
getDistanceメソッド
戻り値 double
引数 o
引数の型 Pointクラスの参照

分からないこと
・mainメソッドでインスタンス化の宣言をしましたがどうすればxとYの座標の値をgetDistanceメソッドに渡して原点からの距離を計算できません。

 ・引数の型になぜ参照を使うか理解できなかったです。

Pointクラス
package helloSpring;

class Point {
double x; // フィールド変数
double y;

Point(double x, double y) { this.x = x; this.y = y; }

}

Practiceクラス
public static void main(String[] args){

Point pp= new Point(3.5,5.9);

double aaa =getDistance(pp);
System.out.println(aaa);

}

public static double getDistance(Point p){

double a=Math.sqrt(xx+yy);

return a;
}

TN8001👍を押しています

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

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

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

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

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

jimbe

2020/01/12 13:44

> Pointクラスの参照って意味がわかりません ではなぜ > public static double getDistance(Point p){ と書かれているのでしょうか.
show76

2020/01/12 14:12

正しいかわからなかったので自分なりに考えて書いたからです。 ただ、参照について理解していないので自分で説明できないです。
jimbe

2020/01/12 16:22

なるほど. 言ってしまえば, それで合っていると思います.
guest

回答2

0

ベストアンサー

うまく日本語で説明できそうもないのでコードで提示します。
①と②で、

  • 呼び出す際の引数の渡し方
  • メソッド内での仮引数の使い方

の違いをよく見比べてください。

Java

1public class Practice { 2 public static void main(String[] args) { 3 4 Point pp = new Point(3.5, 5.9); 5 6 double aaa = getDistance(pp); // ppを渡して距離を計算① 7 System.out.println(aaa); 8 9 double aa = getDistance(pp.x, pp.y); // xyを渡して距離を計算② 10 System.out.println(aa); 11 12 double a = pp.getDistance(); // 蛇足 Pointのメソッドで計算③ 13 System.out.println(a); 14 } 15 16 static double getDistance(Point p) { // ① 17 double a = Math.sqrt(p.x * p.x + p.y * p.y); // 仮引数で受け取ったpのxyで計算 18 return a; 19 } 20 21 static double getDistance(double x, double y) { // ② 22 double a = Math.sqrt(x * x + y * y); // 仮引数で受け取ったxyで計算 23 return a; 24 } 25} 26 27class Point { 28 double x; 29 double y; 30 31 Point(double x, double y) { 32 this.x = x; 33 this.y = y; 34 } 35 36 double getDistance() { // ③ 37 double a = Math.sqrt(this.x * this.x + this.y * this.y); 38 return a; 39 } 40}

投稿2020/01/13 01:35

TN8001

総合スコア10118

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

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

show76

2020/01/13 07:54

ありがとうございます!
guest

0

「Pointクラスの参照」というと回りくどいですが, java ではオブジェクトを渡すといわゆる「参照」ということになります.

厳密な理解には, (java に近い C や C++ 等でのも含む)定義・表現がイロイロありまして面倒ですので, ざっくりと『引数で渡したモノの中身をメソッド内で変更(も)出来る』形式での渡し方という感じでしょうか.
「参照では無い」場合, 例えば int 型の引数は, メソッド内で仮引数の値を変更しても呼び出し側の変数の値は変わりません.

原点からの距離を計算できません

メソッド内においてはパラメータ p を Point p = new Point(~); してある体で使用できます.

投稿2020/01/12 16:24

編集2020/01/13 01:40
jimbe

総合スコア13357

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

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

show76

2020/01/13 07:55

ありがとうございます。 参考にさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問