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

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

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

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Java

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

コンパイル

コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

Q&A

解決済

3回答

2646閲覧

同一ファイルにクラスが2つの時のコンパイル

tukutukubos

総合スコア24

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Java

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

コンパイル

コンパイルとは、プログラミング言語のテキストソース(ソースコード)をコンピュータ上で実行可能な形式(オブジェクトコード)に変換することをいいます

コンパイルエラー

コンパイルのフェーズで生成されるエラーです。よく無効なシンタックスやタイプが含まれているとき発生します。

0グッド

0クリップ

投稿2020/01/24 13:26

前提・実現したいこと

javaで2つのクラスを含んだファイルを作っています。
クラスを二つのファイルに分けるとコンパイルできます。
一つのファイルだとコンパイルができないです。どこが間違っているのでしょうか?
そもそもクラスごとにファイルを分割するものなのでしょうか?

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

test.java:14: エラー: class、interfaceまたはenumがありません import java.util.Scanner; ^

該当のソースコード

java

1class human { 2 private String name; //名前 3 private float height; //身長 4 private float weight; //体重 5 6 human(String n, float h, float w) { 7 this.name = n; 8 this.height = h; 9 this.weight = w; 10 } 11 12} 13 14import java.util.Scanner; 15 16class test { 17 18 public static void main(String[] args) { 19 Scanner stdIn = new Scanner(System.in); 20 21 System.out.println("一人目の名前、身長、体重を入力してください。"); 22 System.out.print("名前 : "); 23 String x = stdIn.next(); 24 System.out.print("身長(m) : "); 25 float xw = stdIn.nextFloat(); 26 System.out.print("体重(kg) : "); 27 float xh = stdIn.nextFloat(); 28 29 System.out.println("二人目の名前、身長、体重を入力してください。"); 30 System.out.print("名前 : "); 31 String y = stdIn.next(); 32 System.out.print("身長(m) : "); 33 float yw = stdIn.nextFloat(); 34 System.out.print("体重(kg) : "); 35 float yh = stdIn.nextFloat(); 36 37 human a = new human(x, xw, xh); 38 human b = new human(y, yw, yh); 39 40 } 41 42}

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

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

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

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

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

guest

回答3

0

import宣言は packageの次に書いてから、クラスの宣言をします。

投稿2020/01/24 13:36

A-pZ

総合スコア12011

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

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

tukutukubos

2020/01/24 13:48

回答ありがとうございます。 一番最初に打ち込めばよいということでしょうか?
退会済みユーザー

退会済みユーザー

2020/01/24 13:53

インナークラス、無名クラス以外は1クラス1ファイルが基本です
guest

0

そもそもクラスごとにファイルを分割するものなのでしょうか?

はい。Javaではクラス名とファイル名が紐付いていますので、特殊な例を除けば1クラス1ファイルがほぼ前提です。

投稿2020/01/25 00:22

maisumakun

総合スコア145183

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

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

0

ベストアンサー

1ファイルにつき1クラスが基本です。
というか、常にそうなるはずです。

一応、インターフェースとかprivateなクラスなんかは一緒に書けますが、
コンパイルすると最終的には別々のclassファイルになっていますから、
常に1ファイルにつき1クラス状態になるはずです。

今回の場合、humanクラス, testクラス ともに public (アクセス修飾子がついていない場合はpublicとみなされるため...らしい...) になっています。
なので別々のファイルに書かないといけません。

投稿2020/01/25 03:31

BeatStar

総合スコア4958

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

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

LouiS0616

2020/01/25 03:33 編集

> アクセス修飾子がついていない場合はpublicとみなされるため いえ、デフォルトの可視性は package-private です。 1ファイルに複数のクラスを置いてもエラーにはなりません。好まれるかはともかく。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問