-1

こんにちは、Java は初めてで、int 形式のメイン メソッドを別のクラスのコンストラクターに渡そうとしましたが、何らかのエラーが発生しています。私は何が間違っていたのか理解できません。

メインメソッドを持つクラス:

import java.util.Scanner;

public class _01 {


    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.print("Enter your : ");
        String name = input.nextLine();
        int size = name.length();

        //System.out.println(size);


        _02 process = new _02(size);

    }

}

コンストラクタを持つクラス:

public class _02 {

    int maxsize;
    int top;
    String arrayStack[];

    public void _02(int size) {

        maxsize = size;
        arrayStack = new String[maxsize];
        top = -1;
    }

    public void push(String... letters) {

        arrayStack[++top] = letters;

    }

    public String pop() {

        return arrayStack[top--];


    }
}

私が得ているエラーメッセージ:

スレッド「メイン」の例外 java.lang.Error: 未解決のコンパイルの問題: コンストラクター _02(int) は未定義です

_01.main(_01.java:16) で

4

4 に答える 4

1

を使用しているからですvoid。Java は、それらをコンストラクターではなくメソッドと見なします。まず第一に、クラスにひどい名前を付けるのをやめてください。そして、これを行います:

public class Whatever {
   private Integer size;
   public Whatever(Integer size) {
      this.size = size;
      System.out.println("I am a constructor");
   };
};

public class Article {
    private String title;
    private String content;
    private String author;
    private DateTime publishDate;

    public Article(String title, String content, String author, DateTime publishDate) {
        this.title = title;
        this.content = content;
        this.author = author;
        this.publishDate = publishDate;
    };

};

新聞のプロジェクトに一緒に取り組んでいるとします。あなたのコードを読んで が表示_01されたとしても、私には何の意味もありません。代わりにArticle, with title,contentなどを見れば、あなたが書いたものをすぐに理解して、好きなように使うことができます。

2 週間後に自分のコードに戻っても、 が何を意味していたのかわかりません_01。多くの開発者と同じように、覚えていないでしょう。コメントを通じて行われた、それについてのジョークさえあります。こんなふうになります:

/**
 * At the time of this writing, only God and I knew what I was doing.
 * Now, only God knows.
 * /

コードは書くのは簡単ですが、読むのは非常に難しいことを忘れないでください。

于 2013-04-29T13:45:22.920 に答える
1

コンストラクターは戻り値の型のないメソッドであるため、コンストラクターの宣言は次のようにする必要があります。

public _02(int size)

クラス名として大文字のletrerを含む名前を使用して、次のJavaスタイルガイドを使用することをお勧めします。たとえば、Two

于 2013-04-29T13:46:36.847 に答える
0

コンストラクターには戻り値の型がありません。したがって、コンストラクタとして使用する場合はvoidfromを削除してください。public void _02(int size)

ただし、クラスの命名は少し奇妙です...

于 2013-04-29T13:44:59.860 に答える
0

public void _02(int size) { ... } から「void」を削除します

于 2013-04-29T13:45:09.543 に答える