1

以下のエラーをコンパイル中にこんにちは友達が来ています

エラー: '.class' が必要です

エラーが何であるかを見つけることができません。多くの Web サイトをチェックインしましたが、このエラーが発生する理由を見つけることができませんでした。助けてください

前もって感謝します。

import java.io.*;

class Test
{
    boolean isGoodEmployee(boolean ismarried,int noofchild,String middlename,String childnames[])
    {
        boolean child,letter,last,child;

        if (noofchild <= 2)
            child=true;
        boolean firstletter = middlename.startsWith("k");
        boolean lastletter = middlename.endssWith("e");

        if (firstletter && (!lastletter))
            letter = true;

        int lastnameletterscount = lastname.length();

        if (lastnameletterscount > 4)
            last = true;

        String name = raju;

        for (int i=0; i < noofchild; i++)
            if(name.equalsIgnoreCase(childnames[i]))
            {
                child = true;
                break;
            }
    }
}


class GoodEmployee
{
    public static void main(String args[]) throws IOException
    {
        String firstname, middlename, lastname;
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("enter the first name of employee");
        firstname = br.readLine();
        System.out.println("enter the middle name of employee");
        middlename = br.readLine();
        System.out.println("enter the last name of employee");
        lastname = br.readLine();
        //System.out.println("full name of employee is:"+first+middle+last);
        System.out.println("enter employee is married or not");
        boolean ismarried = Boolean.parseBoolean(br.readLine());

        if (ismarried)
            System.out.println("enter number of childrens");

        int noofchild = Integer.parseInt(br.readLine());
        String childnames[] = new String[noofchild];
        System.out.println("enter children names");

        for (int i=0; i < noofchild; i++)
            childnames[i] = br.readLine();
        Test t = new Test();
        t.isGoodEmployee(ismarried,noofchild,middlename,childnames[]);
    }
}

「javac GoodEmployee.java」を使用してプログラムをコンパイルしています

4

4 に答える 4

4

のメソッド呼び出しが一致していませんisGoodEmployee

childnames引数は配列として定義されているため、引数を渡すだけで次のように置き換えられます。

t.isGoodEmployee(ismarried,noofchild,middlename,childnames[]);

t.isGoodEmployee(ismarried,noofchild,middlename,childnames);

それとは別に、次のような他のコンパイラ エラーを無視しないでください。

middlename.endssWith("e");
               ^---------extra 's'

javadocsをよく理解してください。

于 2013-01-01T11:58:14.900 に答える
1

このコードには多くの問題があります:
isGoodEmployee() (1 行目) で boolean の子を 2 回宣言しましたが、endsWith
は endWith()
などにする必要がありますが、あなたが述べた問題はありません。このクラスをコンパイルするためにどのコマンド ラインを使用していますか?

于 2013-01-01T11:57:59.967 に答える
0

IDE を使用している場合は、main メソッドを含むクラスを public にします。コマンドウィンドウを使用して実行しようとしている場合、コンパイルに「.class」ファイルは必要ではなく、実行に必要になると思います。したがって、javac GoodEmployee と入力して .class ファイルを作成し、エラーがなければ、java GoodEmployee と入力すると、.class ファイルが実行されます。

于 2013-01-01T12:54:00.743 に答える
0

@Reimeusはそれを釘付けにしました。

奇妙なコンパイルエラーは次のように説明できます。この行で:

 t.isGoodEmployee(ismarried,noofchild,middlename,childnames[]);

このchildnames[]句は、Java 式であると想定されています。しかし実際には、構文は型に最もよく似ています...実際には、 と呼ばれる (存在しない) クラスの配列ですchildnames。Java コンパイラの構文エラー回復コードは.class、型名 (つまりchildnames[].class) の後に挿入すると、構文的に有効な式が得られると判断しました。

もちろん、コンパイラが提案している修正は無意味です...特にchildnames、アプリケーションで名前が付けられたクラスまたはインターフェイスが存在しないためです。


この話の教訓は、異常な構文エラーが原因で、コンパイラが独特のエラー メッセージを生成することがあります。これは、パーサーが誤った入力をどのように解析したかを理解できる場合にのみ意味をなすものです。

于 2013-01-01T12:50:40.157 に答える