回答編集履歴

3 修正

退会済みユーザー

退会済みユーザー

2017/10/11 11:20  投稿

> それぞれのソースファイルに対応したクラスファイル
上記の記載からソースファイルは2つあることが想定されますので、複数クラスというのが複数ファイルということであれば、他の解答者さんのご回答でコンパイル可能なのではないかと思います。
もし、質問に記載のコードが1ファイルとして作成されているものなのであれば、パブリッククラスは1ファイルに1つまで、またパブリッククラス名とファイル名は一致しなければいけないという制約があります。
もしファイルを`Calc.java`として作成されているのであれば CalcLogic の`public`を削除頂き、`CalcLogic.java`として作成されているのであれば、Calcの`public`を削除頂くとコンパイル可能になるかと思います。
上記の場合も、コンパイル後はCalc.class、ClascLogic.classの2つのクラスファイルがそれぞれ作成されます。
---
追記:
上記は検証せずに回答していましたが、実際に確認すると下記エラーとなったため、実際の内容とは異なるかもしれません。やはりきちんと複数ファイル作成されているものと推察します。
```
CalcLogic.java:14: エラー: クラス Calcはpublicであり、ファイルCalc.javaで宣言する必要があります
public class Calc {
      ^
エラー1個
```
---
追記2:
コンパイルではなく、作成されたファイルを実行すると下記のようになりました。
コンパイル時ではなく、コンパイル後に作成されたクラスファイルを実行すると下記のようになりました。
実際の状況とは異なる可能性もあるかもしれませんが、回答に追記します。
```
> java Calc
足すと12、引くと8
```
```
> java CalcLogic
エラー: メイン・メソッドがクラスCalcLogicで見つかりません。次のようにメイン・メソッドを定義してください。
  public static void main(String[] args)
またはJavaFXアプリケーション・クラスはjavafx.application.Applicationを拡張する必要があります
```
2 さらに追記

退会済みユーザー

退会済みユーザー

2017/10/11 11:19  投稿

> それぞれのソースファイルに対応したクラスファイル
上記の記載からソースファイルは2つあることが想定されますので、複数クラスというのが複数ファイルということであれば、他の解答者さんのご回答でコンパイル可能なのではないかと思います。
もし、質問に記載のコードが1ファイルとして作成されているものなのであれば、パブリッククラスは1ファイルに1つまで、またパブリッククラス名とファイル名は一致しなければいけないという制約があります。
もしファイルを`Calc.java`として作成されているのであれば CalcLogic の`public`を削除頂き、`CalcLogic.java`として作成されているのであれば、Calcの`public`を削除頂くとコンパイル可能になるかと思います。
上記の場合も、コンパイル後はCalc.class、ClascLogic.classの2つのクラスファイルがそれぞれ作成されます。
---
追記:
上記は検証せずに回答していましたが、実際に確認すると下記エラーとなったため、実際の内容とは異なるかもしれません。やはりきちんと複数ファイル作成されているものと推察します。
```
CalcLogic.java:14: エラー: クラス Calcはpublicであり、ファイルCalc.javaで宣言する必要があります
public class Calc {
      ^
エラー1個
```  
 
---  
追記2:  
コンパイルではなく、作成されたファイルを実行すると下記のようになりました。  
javaコマンドで実行する際は、mainメソッドのあるクラスを実行する必要があります。  
実際の状況とは異なる可能性もあるかもしれませんが、回答に追記します。  
 
```  
> java Calc  
足すと12、引くと8  
```  
```  
> java CalcLogic  
エラー: メイン・メソッドがクラスCalcLogicで見つかりません。次のようにメイン・メソッドを定義してください。  
  public static void main(String[] args)  
またはJavaFXアプリケーション・クラスはjavafx.application.Applicationを拡張する必要があります  
```
1 追記

退会済みユーザー

退会済みユーザー

2017/10/11 11:13  投稿

> それぞれのソースファイルに対応したクラスファイル
上記の記載からソースファイルは2つあることが想定されますので、複数クラスというのが複数ファイルということであれば、他の解答者さんのご回答でコンパイル可能なのではないかと思います。
もし、質問に記載のコードが1ファイルとして作成されているものなのであれば、パブリッククラスは1ファイルに1つまで、またパブリッククラス名とファイル名は一致しなければいけないという制約があります。
もしファイルを`Calc.java`として作成されているのであれば CalcLogic の`public`を削除頂き、`CalcLogic.java`として作成されているのであれば、Calcの`public`を削除頂くとコンパイル可能になるかと思います。
上記の場合も、コンパイル後はCalc.class、ClascLogic.classの2つのクラスファイルがそれぞれ作成されます。
上記の場合も、コンパイル後はCalc.class、ClascLogic.classの2つのクラスファイルがそれぞれ作成されます。
---
追記:
上記は検証せずに回答していましたが、実際に確認すると下記エラーとなったため、実際の内容とは異なるかもしれません。やはりきちんと複数ファイル作成されているものと推察します。
```
CalcLogic.java:14: エラー: クラス Calcはpublicであり、ファイルCalc.javaで宣言する必要があります
public class Calc {
      ^
エラー1個
```

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る