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

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

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

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

Q&A

解決済

3回答

1588閲覧

コンストラクターの演習でエラーが出て困っています。

talabagani

総合スコア50

Java

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

0グッド

0クリップ

投稿2021/07/04 10:28

編集2021/07/04 12:21

#[環境]
Java version 16.0.1
VS Code
Mac OS Big Surの環境です。
java -version
java version "16.0.1" 2021-04-20
Java(TM) SE Runtime Environment (build 16.0.1+9-24)
Java HotSpot(TM) 64-Bit Server VM (build 16.0.1+9-24, mixed mode, sharing)
MacBook:09_MinutesToYearsandDayCalculator $

パソコン MacBook(Retina, 12-inch,2017), memory 8GB

#[エラー]
##1つ目のエラー
Main.java:4: エラー: クラス Pointのコンストラクタ Pointは指定された型に適用できません。
Point first = new Point(6 , 5);
^
期待値: 引数がありません
検出値: int,int
理由: 実引数リストと仮引数リストの長さが異なります

##2つ目のエラー
Main.java:5: エラー: クラス Pointのコンストラクタ Pointは指定された型に適用できません。
Point second = new Point(3 , 1);
^
期待値: 引数がありません
検出値: int,int
理由: 実引数リストと仮引数リストの長さが異なります

##3つ目のエラー
Main.java:7: エラー: シンボルを見つけられません
System.out.println(first.distance());
^
シンボル: メソッド distance()
場所: タイプPointの変数 first
エラー3個

[学習状況]
2021年5月中旬から独学でJavaを学習しはじめました。
progateを3巡、ドットインストール1巡、スッキリJavaの本を8割読みました。現在、UdemyのJava Programming Masterclass for Software Developersというコースで動画を見たり、演習問題に取り組んでいます。
この問題はUdemyでの演習18番目なので、まったくの初めてというわけではありません。
まだまだ初心者ですが真面目に取り組んでいるので、何卒、よろしくお願いします。

#[演習問題の内容]
Pointというクラスを作りましょう。
このクラスにはx,yの二つのフィールドがあります。それぞれintです。

コンストラクターを作りましょう。
一つ目のコンストラクターは引数なしです。
二つ目のコンストラクターはx、yを引数に持ちます。

distanceというメソッドを作りましょう。
引数がない時は、(x、y)から(0、0)の距離を求めます。
引数がある時は(x、y)からその引数の距離を求めます。

#[わからない事]
エラーの1番目と2番目は、引数の数がおかしいと言っているように思うのですが、何度みても問題が内容に思えます。
何が、もんだいなのでしょうか?

エラー3番目は『シンボルがみつけられません』です。この時は、スペルミスが疑われるのでスペルを確認したのですが、問題内容に思います。

#[自分コード]

java

1public class Pointx{ 2 private int x; 3 private int y; 4 5 public Pointx(){ 6 } 7 8 public Pointx(int x, int y){ 9 this.x=x; 10 this.y=y; 11 } 12 13 public double distnce(){ 14 return Math.sqrt(this.x*this.x-this.y*this.y); 15 } 16 17// public double distnce(){ 18// return Math.sqrt(getX()*getX()-getY()*getY()); 19// } 20// こっちのコードでも書いてみたのですが、エラーは消えませんでした。 21 22 23 public double distnce(int a, int b){ 24 return Math.sqrt((this.x-a)*(this.x-a)-(this.y-b)*(this.y-b)); 25 } 26 27 28 public int getX(){ 29 return x; 30 } 31 public int getY(){ 32 return y; 33 } 34 public void setX(int x){ 35 this.x=x; 36 } 37 public void setY(int y){ 38 this.y=y; 39 } 40 41}

java

1public class Main { 2 public static void main(String[] args) { 3 4 Pointx first = new Pointx(6 , 5); 5 Pointx second = new Pointx(3 , 1); 6 7 System.out.println(first.distance()); 8 } 9 10} 11

#[ネットで見つけた模範回答コード]

java

1public class Point { 2 private int x; 3 private int y; 4 5 public Point() { 6 } 7 8 public Point(int x, int y) { 9 this.x = x; 10 this.y = y; 11 } 12 13 public int getX() { 14 return this.x; 15 } 16 17 public void setX(int x) { 18 this.x = x; 19 } 20 21 public int getY() { 22 return this.y; 23 } 24 25 public void setY(int y) { 26 this.y = y; 27 } 28 29 public double distance() { 30 return Math.sqrt((getX()*getX()) + (getY()*getY())); 31 } 32 33 public double distance(int x, int y) { 34 return Math.sqrt((x-getX())*(x-getX()) + (y-getY())*(y-getY())); 35 } 36 37 public double distance(Point point) { 38 return distance(point.x, point.y); 39 } 40}

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

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

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

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

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

BeatStar

2021/07/04 12:06

エラーメッセージは『省略せずに』書いてください。 エラーメッセージにはヒント(たとえば行番号や『どこでエラーが起きているか』とか)が隠されています。
talabagani

2021/07/04 12:22

エラーを全て貼ったと思っていたのですが、足りてないですか?
BeatStar

2021/07/04 12:30 編集

あ、すみません。見逃してました。 >> エラーの1番目と2番目は、引数の数がおかしいと言っているように思うのですが、... の部分だけ見てたみたいです……。 無視していいです。 (なんで見逃してたんだろ…… orz)
talabagani

2021/07/04 13:29

了解です。 気が付いたことを教えてくださって、ありがとうございます。
guest

回答3

0

void がついているため、コンストラクタになっていません。
あと大文字小文字も間違えています。

diff

1- public void point(){ 2+ public Point(){

diff

1- public void Point(int x, int y){ 2+ public Point(int x, int y){

投稿2021/07/04 11:16

編集2021/07/04 11:17
Zuishin

総合スコア28662

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

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

talabagani

2021/07/04 12:25 編集

ほんとうですね。 ありがとうございます。 あー恥ずかしいです。 おかげさまで、一つ目のエラーと二つ目のエラーが解決しました。
Zuishin

2021/07/04 13:06

「シンボルが見つかりません」はエラーの出た行を確かめればすぐにわかるでしょう。 綴りを間違えています。
talabagani

2021/07/04 13:42

ほんとうですね。スペルがあっているように見えたんですよね。 VS Codeを活用して確認をするようにします。 教えていただき、ありがとうございました。
guest

0

Javaの標準で用意されているクラスに同名のもの(Pointクラス)がありますんで、おそらくそれとかぶってしまっているものと思われます
ちょっとクラスの名前を変えてみては
#Pointx とか

投稿2021/07/04 10:39

y_waiwai

総合スコア87800

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

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

talabagani

2021/07/04 11:06

Pointクラスってあるんですね。たしかに、ありそうな名前ですね。クラス名早速、変えてみました。クラス名をつけるときに、意識するようにします。 クラス名を変えてみたのですが、エラーメッセージは全て健在なようなので今回はクラス名が問題ではないみたいです。
dodox86

2021/07/04 12:11 編集

PointクラスもMainクラスもpackage宣言が無いのでデフォルト(無名)パッケージに属するかたちとなるため、importの必要はありません。むしろ、指定することはできません。
guest

0

ベストアンサー

3番目のエラー、よく見よう。

Java

1 public double distnce(int a, int b){ 2 }

Java

1 public static void main(String[] args) { 2 System.out.println(first.distance()); 3 }

投稿2021/07/04 12:45

javahack

総合スコア1088

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

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

dodox86

2021/07/04 13:09

@質問者さん 質問文中の「[わからない事]」より: > スペルミスが疑われるのでスペルを確認したのですが、 この手の問題は、人間の"目視"ではなくエディターの検索機能、必要に応じて大文字小文字を区別するオプションを指定して確認します。むしろ経験者はそうします。 (短い単語であれば、スペルミスから漂う違和感を感じることもありますが)
Zuishin

2021/07/04 13:32

こんなところが難しかったのか。 回答するんじゃなかった。
Zuishin

2021/07/04 13:36

そもそも VS Code を使っているのにこれが自分で修正できない意味がわからない。
talabagani

2021/07/04 13:36

目視じゃないんですね、、 なるほど。 すごい。 エディターの検索機能、これは同じ色をしているとかを確認したり、command f の四角の中にメソッド名やフィールド名をいれて確認をするということですか?
talabagani

2021/07/04 13:39

>VS Code を使っているのにこれが自分で修正できない意味がわからない。 VS Codeをもっと活用するようにしたいと思います。 単純なミスをお聞きしてしまいすみません。
Zuishin

2021/07/04 13:41

活用以前の話で、選択したら同じ単語はハイライトされるし波線もついているのに何を確認して間違いないと思ったのか理解できない。
talabagani

2021/07/04 13:49

たしかにそうなんですけれど、 エラーが出ている場所を確認すると、distanceというスペルはあっているので、おかしいなって思いながらそれを何度も確認してしまいました。 スペルが間違っていたのは、もともとの定義した方のdistanceでした。 もちろん、そちらのスペルが間違えていることを疑うべきなんですよね。
Zuishin

2021/07/04 14:02

意識して疑うようなものでもなく、スペルを何と比較するかは無意識のうちにでもわかるものだと思ったけど、私の頭が良すぎただけか。世間の人もこんなものだと思うけどなあ。
dodox86

2021/07/04 14:17

まぁ、最初の頃はプログラミングの知識からエディターの使い方から怒涛の情報量で気を付けるポイントも散漫になりがちだとも思いますので、次に繋げられる経験値にしていけば良いかと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問