電子書籍の厳選無料作品が豊富!

public class A{
public static void B(String[] args){
C D = new C();
D.E(F);
}
}
public class C{
private String F;
public C(){
F =“Practice”;

}
protected static void E(String F){
System.out.println(F);
}
}
以上のプログラムで
型 CのメソッドE(String)は引数()に適用できません
ローカル変数Fの値は使用されていません
型CからのメソッドF(String[])はローカルで使用されません
の3つのエラーがでてしまいます。
アクセス修飾子を変更・追加・削除しないで解決するため、新しいインスタンスを作成したり、Cにnullをいれてみたりしてみたり他にもいろいろしてみたのですがちがうエラーのがでたりエラーの数が増えてしまいます。

質問者からの補足コメント

  • インスタンスは作成したので読み込めていると思っていました。
    変数Fの内容を出力したい場合はあたらしく変数を作成しそこにFの内容を格納したらよいのでしょうか?

    No.1の回答に寄せられた補足コメントです。 補足日時:2021/02/28 22:48
  • うーん・・・

    ありがとうございます。渡す側と受け取り側両方に何かいれないといけないと思っていました。

    D.E()に変更すると
    メソッドE(String)は引数()に適用できません
    msgを変数に解決できません。
    フィールドC.Fの値は使用されていません

    と表示されるようになりました。
    StaticやVoidの削除などしましたが解決せず、Tipsではfinalやらobjectの作成なるものがでてきましたがまだ、この課題までにはでてこなかったので使わなくてもできるはずなのですが。

    No.2の回答に寄せられた補足コメントです。 補足日時:2021/03/01 09:35
  • わざわざ作成頂きありがとうございます!!
    なぜか型メソッドE(String)は引数()に適用できませんというエラーだけが残ってしまいます。
    それぞれのclassを別ファイルで作成してpackageで関連付けしているのですが、これが原因でしょうか?

    No.3の回答に寄せられた補足コメントです。 補足日時:2021/03/02 16:20
  • 作って頂いたコードの通りです。
    エラーはでてませんが変数DをD.E()の直前にD.G(H,I)で別の変数を出力するメソッドを呼び出しています

    No.4の回答に寄せられた補足コメントです。 補足日時:2021/03/02 20:20
  • へこむわー

    ファイルMain.java
    package 2-1;

    public class Main{
    public static void main(String[] args){
    String text1 = “Lesson”;
    String text2 = “2-1”;
    Sub moji = new Sub();
    moji.connect(text1, text2);
    moji.output();
    }
    }

    No.5の回答に寄せられた補足コメントです。 補足日時:2021/03/03 06:10
  • ファイルSub.java
    package 2-1;
    public class Sub{
    private String message;
    public Sub(){
    message = “practice”;
    }
    protected void connect(String text1, String text2){
    String plus = text1 + text2;
    System.out.println(plus);
    }
    protected void output(){
    System.out.println(message);
    }
    }
    エラーはmoji.output();の行に
    型Subのメソッドoutput(String)は引数()に適用できません
    だけです。

      補足日時:2021/03/03 06:11

A 回答 (6件)

提示されているコードで、Sub::output(String) の呼び出しなどは


Main.javaに存在しないので、別なファイルをコンパイルしようと
しているとか、編集を保存し損ねていたとか、そういう勘違いは
ありませんか?

あとよく覚えてませんが、パッケージ名に数字と記号だけの組み合わせは
コンパイル通りますか?

素直にコードするとちゃんと動きますね。
オンラインサービスなのでpackage定義はできませんが。
https://paiza.io/projects/gQyqtlvANQ86Rg3nJxVOuQ
    • good
    • 0

あなたの作ったプログラムの全体を出して.



それと, エラーメッセージなどが出ているならそれも全部.
この回答への補足あり
    • good
    • 0

メソッドE()の定義に引数がないのに、呼び出し時に引数を指定しているんじゃないですか?

この回答への補足あり
    • good
    • 0

静的メソッド(static)でインスタンス変数を扱うことはできません。



"Practice"が出力される真っ当なコードは下記になります。
https://paiza.io/projects/DdTs3JVSEFmiRqR1Amecxg
この回答への補足あり
    • good
    • 1

引数と変数の違いを理解できていないと思います。



メソッドEからString Fを削除し、
D.E(F)をD.E()に変更してください。
それだけで、インスタンス変数のFは出力されます。
この回答への補足あり
    • good
    • 0

Cクラスのインスタンス変数であるFと、Eメソッドの引数であるFが区別つかないからです。


引数がFではなくGになれば解決します。

あとAクラス内にFなんて変数は存在しないので、D.E(F)は実行不可能です。
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A