【问题标题】:"the method ** is undefined for the type string" in EclipseEclipse中的“方法**未定义类型字符串”
【发布时间】:2013-07-23 12:50:22
【问题描述】:

我目前正在完成一个项目并正在尝试创建一个菜单。菜单本身工作正常,但是当我尝试链接到方法本身所在的另一个 java 文件时,我收到错误“方法 method name 未定义类型 String”。下面是我用来尝试链接到另一个 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 种方法的代码。项目要求有 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;

    }
}

任何帮助将不胜感激:)

【问题讨论】:

  • 确切错误是什么?另请注意,if (this.isOnLoan = false)false 分配给isOnLoan,并且始终将整个表达式评估为false。你应该使用==(或(更好)if (!this.isOnLoan))。
  • @MarounMaroun:编译器错误没有堆栈跟踪。并且if (!this.isOnLoan) 比布尔比较更可取。
  • @jlordo 我没有注意到这是编译器错误。当然更可取,我只是想让他知道== 是为了平等。
  • sc.nextLine() 返回一个String,你正在调用movieID.borrowMovie();。那是完全错误的。如果您能准确地展示您正在尝试做的事情,我们可以提供更多帮助。

标签: java eclipse methods undefined


【解决方案1】:

查看您的代码,我猜movieIDString

String 没有方法borrowMovie()returnMovie(),因此编译器会报错。

你想要的不是movieID.borrowMovie()borrowMovie(movieID)

这是您的 borrowMovie()returnMovie() 方法中的另一个错误:

if (this.isOnLoan = false)

您在此处分配falsethis.isOnLoan。这很可能不是你想要的。使用== 进行比较,使用= 进行分配。更好的是,要检查 boolean 是否为 false,请使用 !

if (!this.isOnLoan)

为什么你的方法返回 double 值?

【讨论】:

    【解决方案2】:

    此行将值 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;
        }
    }
    

    【讨论】:

    • 你需要在 else 分支上返回一个 Double 值 public double returnMovie(int daysBorrowed) { if (this.isOnLoan = false) { return Double.NaN; } 其他 { this.isOnLoan = false;返回这个.id; } }
    猜你喜欢
    • 1970-01-01
    • 2014-06-11
    • 1970-01-01
    • 2014-12-09
    • 1970-01-01
    • 2013-09-07
    • 2015-01-29
    • 2021-11-26
    • 1970-01-01
    相关资源
    最近更新 更多