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

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

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

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

Q&A

0回答

1473閲覧

The type Television is already defined を解決したい

Pro01x19

総合スコア17

Java

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

0グッド

0クリップ

投稿2021/02/09 04:56

編集2021/02/09 05:09

前提・実現したいこと

https://www.javadrive.jp/start/constructor/index2.html
のサイトでjavaを学習しています。
こちらのサンプルコードをVSCodeで読み込んだ際にエラーが発生してしまい
原因解明が出来なかったためお力を貸してくださると助かります。

発生している問題・エラーメッセージ

エディターの波線が引かれている箇所のメッセージ

The type Television is already definedJava(0)

実行した際のメッセージ

'void Television.<init>(java.lang.String)' at ctest9.main(ctest9.java:3)

該当のソースコード

ctest9.java class ctest9{ public static void main(String args[]){ Television tv1 = new Television("居間"); tv1.dispChannel(); Television tv2 = new Television("台所"); tv2.dispChannel(); } } class Television // このTelevisionに波線 { private int channelNo; private String place; Television(String newPlace){ channelNo = 1; place = newPlace; } public void setChannel(int newChannelNo){ channelNo = newChannelNo; } public void dispChannel(){ System.out.println("現在のチャンネルは" + channelNo+ "です"); System.out.println("設置してある場所は" + place + "です"); } }

試したこと

元々サンプルコードをフォルダに入れ、package フォルダ名 で管理しておりました。
それを外に出し、ファイルのみにしたのですが今回は関係なかったようです。

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

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

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

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

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

m.ts10806

2021/02/09 05:02

全て1ファイルに書かれてるのでしょうか
Pro01x19

2021/02/09 05:07

はい、ctest9.java というファイルに書かれています。 明記する形で修正しておきます。
m.ts10806

2021/02/09 05:10

意図的にインナークラスを使う実装でないのでしたら、1ファイル1クラスにしてください。
Pro01x19

2021/02/09 05:16

普段の実装ではそのようにするのですね。勉強になります。 今回に関しては実装に至る以前の基礎学習(引数があるコンストラクタ)時点で参考にしているサンプルコードを使用した際にエラーなってしまいました。 ご質問なのですが、今回のような実装をする際、 Televisionを別の名前に置き換えるか もう1つファイルを作る。どちらが実務で多く使われていますか?
m.ts10806

2021/02/09 05:24

インナークラスとはちょっと違いましたね失礼。 Javaの規約的にはファイル名=クラス名 なので、複数クラスが交じるという実装自体、そうそうあることはないです。 調べてみるとわかりますが、Java自体の設計思想のようですね。 基礎学習の教材として適当なものかどうかはまず検討すべきところですね
Pro01x19

2021/02/09 05:35 編集

Javaの思想や構造についても理解が浅く申し訳ないです... こちらのサイトを閲覧し理解することが入社前課題なんですよね... それだけでは不安なのでスッキリjava入門という書物でも学習している段階です。 今回の問題としては ・複数クラスを1つのファイルに入れているため やるならMainクラスとTelevisionクラスの2つのファイルを用意し紐付ける必要がある。 という結論で間違えないでしょうか...?
m.ts10806

2021/02/09 05:42

ふむ。課題なら全く事情を知らない他人に聞くより出題者に聞かれたほうが良いでしょうね。 課題には達成すべき目的や意図がありますから、それと離れる可能性のある赤の他人の意見は参考にできません。 なにより、あなた自身が完璧に説明しきらなければ意味がないので、そこまで付き合う義理や責任は赤の他人にはありません。 課題だと聞いた上で言えることは「エラーで調べて適切に対応してね」くらいです。
Pro01x19

2021/02/09 05:44

まったくもってその通りです... 出題者の方にどういった点で理解に苦しんでいるかを伝えて参ります。
dodox86

2021/02/09 08:10

ctest9クラスとTelevisionクラスの配置具合を替えてコンパイルしたらエラーが出るようになった、ということでしょうか。 (サンプルプログラムの当初のかたちでコンパイルしていたときはエラーは無かった?) 前にコンパイルしたときの*.class ファイルがCLASSPATHのどこかに残ってしまっているのではないでしょうか。
Pro01x19

2021/02/09 08:33

こちらなのですが、ターミナルでコンパイル、実行はできたのですがVSCodeでは出来ない。という状態でした。また、このファイル名は初めて使うためそのような事態になっていないと思われます。 CLASSPATHがなんなのか分からないのでお答え出来なく申し訳ございません。 また今回のエラーは自己解決いたしましたので解決方法を記載し、解決済みとさせていただきます。
m.ts10806

2021/02/09 08:35

入社前の課題の結果を全世界からアクセスできる場所に公開して良いかどうかは一考いただきたく。
m.ts10806

2021/02/09 08:39

直接的には実業務のものではないかもしれませんが、本質的には先日のGithubの件と似てると思います。公開や投稿の判断の是非、責任の所在。
Pro01x19

2021/02/09 08:41

一般の検索でもHitする全世界からアクセス可能な資料サイトのサンプルコードのサンプルコードなので良いと判断してしまいました...確かにその状況は不味かったかもしれません... 自己解決済みにしてしまったので削除依頼受理されないかもですね... 全世界からアクセス可能な場所に公開。
m.ts10806

2021/02/09 08:42

まあjavadrive自体は公開されていて私も学習時期にはよくお世話になったもので、これ自体には特になにも問題はないでしょうけど、今後業務に関わる際には必要な心構えにはなるかなと。脅したつもりはないので、あまり思いつめませんよう。
Pro01x19

2021/02/09 08:46

いえ、指摘していただいて助かりました。 念のため削除依頼は送らせていただいたので削除された場合は悪しからず
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問