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

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

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

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

Q&A

解決済

5回答

5670閲覧

【Javaの質問です】クラスについて

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

1グッド

0クリップ

投稿2016/03/17 05:27

こんにちは。

先日までÇ言語の勉強をしておりましたが、
課題がJavaに切り替わったため、独学でJavaの勉強をしております。

今、クラスの勉強をしておりまして、
下記のサンプルコードに「身長」をheightとして
追加したところ、エラーが出るようになってしまいました。

name,ageと同じような変数に設定しているのですが、
なぜ表示されないのかわかりません。。
①から②に変更したいと考えております。

また{}の使い方は下記のソースのほうがいいのでしょうか?
Ç言語で様々な方からご助言頂いた際には下記のような使い方をしていたのですが・・・

for() { if(){ } }

併せて、ご助言いただけますと幸いです。

public class Java08 { public static void main(String[] args) { Human human = new Human("taro" , 10); human.introduce(); } } public class Human{ String name; int age; int height; public Human(String n , int a){ name = n; age = a; height = b; } public void introduce(){ System.out.println(name + age + height); } }

public class Java08 { public static void main(String[] args) { Human human = new Human("taro" , 10,160); human.introduce(); } } public class Human{ String name; int age; int height; public Human(String n , int a , int b){ name = n; age = a; height = b; } public void introduce(){ System.out.println(name + age + height); } }
lib👍を押しています

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

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

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

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

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

guest

回答5

0

ベストアンサー

Exception in thread "main" java.lang.NoSuchMethodError: dotinstall.Human.<init>(Ljava/lang/String;II)V
at dotinstall.Java08.main(Java08.java:5)

エラーメッセージを意訳すると

  • dotinstall.Human というクラスの引数が (String, int, int) であるコンストラクタを呼びだそうとしたが、そのようなメソッドが見つからない。
  • 例外が起きたのは Java08.java というファイルの5行目、main メソッドの途中

Human クラスのコンストラクタの記述が間違っているか、ビルドが完了していないのでは?


Eclipse だと実行を試みると勝手にビルドされる…どころか、デフォルトだとソースコードを変更して保存する度にビルドが走ると思うんですが、設定を変更されているんですかね?

ただ、ビルドが済んでいなかったり構文エラーでコンパイルが通らなかったりすると、もっと別のエラーメッセージが出る気がします。

実行結果(エラーメッセージ含む) は Eclipse の「コンソール(console)」ビューに表示されると思いますが
横並びにある「問題(problem)」ビュー中に、何か警告やエラー報告されていないでしょうか?

もしくは、「実行の構成」に何らかの誤りが含まれていて、意図せず別のクラスを実行している場合もあります… これも別のエラーメッセージがでる気がしますけど。

現状、問題環境の情報が出揃っていないので、どれも推測の域を出ませんが…
時間をかけても解決しないようであれば、(個人の情報が漏れないようにして)スクリーンショットを貼り付けるのが一番手っ取り早いのかも

投稿2016/03/17 13:33

heignamerican

総合スコア94

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

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

退会済みユーザー

退会済みユーザー

2016/03/18 07:52

ご回答ありがとうございます。 初期化してやり直したら同じようなことが起こらなくなりましたので、 一旦様子を見たいと思います。
guest

0

記法について

どちらでも良いです。https://teratail.com/questions/29983が参考になります。

エラーについて

②についてですが、2つのクラスがpublicになっているということは、2つのJavaファイルが存在すると思います。
片方しかビルドされていない可能性がありそうです。

投稿2016/03/17 07:47

Odacchi

総合スコア907

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

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

0

ちゃんとコンパイルされてないのかもしれません。
クリーンしてみてはいかがでしょう。

投稿2016/03/17 06:24

swordone

総合スコア20651

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

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

退会済みユーザー

退会済みユーザー

2016/03/17 06:28

ご回答ありがとうございます。 クリーン初めて聞きました! 早速やってみます!
guest

0

僕もjava初心者ですが、答えてみます!笑
間違ってたらすいません。
一応これで実行はできると思います。
まともな答えになってないと思いますが、すいません。

public class Java08 {
public static void main(String[] args) {
Human human = new Human("taro" , 10,160);
human.introduce();
}
}

class Human {
String name;
int age;
int height;

Human(String name, int age, int height){ this.name = name; this.age = age; this.height = height; } public void introduce(){ System.out.println(name + age + height); }

}

投稿2016/03/17 06:10

garigari321

総合スコア12

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

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

退会済みユーザー

退会済みユーザー

2016/03/17 06:15

ご回答ありがとうございます。 私のEclipseでは、エラーがでてしまうんですよね・・・ これがでます。 Exception in thread "main" java.lang.NoSuchMethodError: dotinstall.Human.<init>(Ljava/lang/String;II)V at dotinstall.Java08.main(Java08.java:5) 今回のエラーは私のEclipseの問題なのかなって感じがしました。 一旦調査してみたいと思います。。
garigari321

2016/03/17 06:21

そういうこともあるんですね。 僕もEclipseを使ってます! プロジェクトの作り直しでどうにかならないかな? そんなことないか笑 原因がわかったら教えてほしいです!
退会済みユーザー

退会済みユーザー

2016/03/17 06:32

原因はまだわからないです・・ swordoneさんからいただいたクリーンを試しているのですが、 まだうまくいかないため、最初から打ってみることにしました!
guest

0

1のほうの、ソースはHumanのコンストラクタの引数にbが宣言されてないので、コンパイルが通りませんね。。
2のほうは動かすと「taro10160」と表示されますが、出力にはあまり意味がない・・のでしょうか。

C言語でもソースのスタイルは好みですが、特にこだわりがなくて、Eclipseを使っている場合には、[ソース][フォーマット]とすると、だいたい多くの人が使うスタイルに整形されます。

投稿2016/03/17 05:42

thesecret11

総合スコア234

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

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

退会済みユーザー

退会済みユーザー

2016/03/17 05:55

ご回答ありがとうございます。 私のEclipseでは表示もされませんでしたので、 そこが気になって質問させていただきました。 今回表示されているのであれば、私のEclipseのエラーになると思うので、 ちょっと調べてみようと思います。 出力にはあまり意味はないです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問