1

嗨朋友们在编译下面的错误来了

错误:预期为“.class”

我无法找到错误所在。我检查了许多网站,但无法找到此错误出现的原因。请帮助

提前致谢。

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() (第一行)中声明了两次 boolean child,
endsWith 应该是 endsWith()
等等,但这些都不是您所说的问题。你用什么命令行来编译这个类?

于 2013-01-01T11:57:59.967 回答
0

@Reimeus 已经搞定了。

奇怪的编译错误可以解释如下。在这一行:

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

childnames[]短语应该是Java表达式。但事实上,语法最接近于一个类型......实际上是一些(不存在的)类的数组,称为childnames. Java 编译器的语法错误恢复代码已经决定,如果它插入.class到类型名 (ie childnames[].class) 之后,它将给出一个语法上有效的表达式。

当然,编译器建议的更正是荒谬的......尤其是因为您的应用程序中不会有一个类或接口childnames


这个故事的寓意是,不寻常的语法错误有时会导致编译器产生特殊的错误消息,只有当你能弄清楚解析器如何解析错误输入时,这些错误消息才有意义。

于 2013-01-01T12:50:40.157 回答
0

如果您使用的是 IDE,请将带有 main 方法的类公开。如果您尝试使用命令窗口运行它,我认为编译不需要“.class”文件,而是需要执行。因此,通过输入 javac GoodEmployee 获得 .class 文件并且没有错误后,输入 java GoodEmployee 它将执行您拥有的 .class 文件。

于 2013-01-01T12:54:00.743 回答