Java Eclipse中的“类型字符串的方法**未定义”

Java Eclipse中的“类型字符串的方法**未定义”,java,eclipse,methods,undefined,Java,Eclipse,Methods,Undefined,我目前正在完成一个项目,并试图创建一个菜单。菜单本身工作正常,但当我尝试链接到方法本身所在的另一个java文件时,我发现错误,类型字符串的方法名称未定义。下面是我用来尝试链接到另一个java文件中的方法的代码 { if (menuChoice.equals("A")) { System.out.print("Enter the Movie ID: "); movieID = sc.nextLine()

我目前正在完成一个项目,并试图创建一个菜单。菜单本身工作正常,但当我尝试链接到方法本身所在的另一个java文件时,我发现错误,类型字符串的方法名称未定义。下面是我用来尝试链接到另一个java文件中的方法的代码

        {
        if (menuChoice.equals("A"))
        {
            System.out.print("Enter the Movie ID: ");
            movieID = sc.nextLine();
            movieID.borrowMovie();
        }
        if (menuChoice.equals("a"))
        {
            System.out.print("Enter the Movie ID: ");
            movieID = sc.nextLine();
            movieID.borrowMovie();
        }
        if (menuChoice.equals("B"))
        {
            System.out.print("Enter the Movie ID: ");
            movieID = sc.nextLine();
            movieID.returnMovie();
        }
        if (menuChoice.equals("b"))
        {
            System.out.print("Enter the Movie ID: ");
            movieID = sc.nextLine();
            movieID.returnMovie();
        }
下面是我试图在另一个java文件中链接到的两个方法的代码。这是一个项目的要求,有2个单独的类文件,并演示如何使用它们一起,但这一部分让我难住了

// Implement borrowMovie method
public double borrowMovie(String memberID)
{
    if (this.isOnLoan = false)
    {
        this.isOnLoan = true;
    }
    else 
    {
        return Double.NaN;
    }
    }

// Implement returnMovie method
public double returnMovie(int daysBorrowed)
{
    if (this.isOnLoan = false)
    {
        return Double.NaN;
    }
    else
    {
        this.isOnLoan = false;

    }
}

任何帮助都将不胜感激:

此行将值false分配给isOnLoan,因此将始终产生true

如果this.isOnLoan=false

除此之外,else分支上没有返回值,例如:

public double returnMovie(int daysBorrowed)
{
    if (this.isOnLoan = false)
    {
        return Double.NaN;
    }
    else
    {
        this.isOnLoan = false;
        return this.id;
    }
}

看看你的代码,我猜电影ID是一个字符串

类字符串没有borrowMovie和returnMovie方法,因此编译器会告诉您这样做的错误

而不是movieID.brookmovie您想要的电影:brookmoviemovieid

borrowMovie和returnMovie方法中还有一个bug:

您在此处为this.isOnLoan赋值为false。这很可能不是你想要的。使用==进行比较,=进行赋值。更好的是,要检查布尔值是否为false,请使用!:


为什么您的方法返回双值?

确切的错误是什么?另外请注意,如果this.isOnLoan=false将false赋值给isOnLoan,并且整个表达式的计算结果为false,则始终为false。您应该使用==或更好,如果!this.isOnLoan.@marounnaroun:编译器错误没有堆栈跟踪。如果!this.isOnLoan优于布尔比较。@jlordo我没有注意到这是编译器错误。当然更可取的是,我只是想让他知道==表示相等。sc.nextLine返回一个字符串,您正在调用movieID.movie;在那上面。那是完全错误的。如果您能够准确地显示您正在尝试执行的操作,我们可以提供更多帮助。您需要在else分支public Double returnMovieint daysBorrowed{if this.isOnLoan=false{return Double.NaN;}else{this.isOnLoan=false;return this.id;}
if (this.isOnLoan = false)
if (!this.isOnLoan)