【问题标题】:Can't add new string instance variable to existing code无法将新的字符串实例变量添加到现有代码
【发布时间】:2013-10-08 01:09:30
【问题描述】:

嗨,我在将字符串教师姓名添加到我为 coursename 制作的现有课程中时遇到问题,你能帮我修复错误吗 - 这给了我 8 个错误

import java.util.Scanner;

公开课成绩册 {

private String courseName, instructorName;

public GradeBook ( String name )
{
    courseName = name; 
}

public GradeBook ( String name )
{
    instructorName = name; 
}

public void setCourseName ( String name )
{
    CourseName = name;
}

public void setInstructorName ( String name )
{
    InstructorName = name;
}

public void getCourseName ( String name )
{
    return courseName;
}

public void getInstructorName ( String name )
{
    return instructorName;
}

public void displayMessage();
{
    System.out.printf( "Welcome to the grade book for\n%s!\n\n",
        getCourseName() );
    System.out.printf( "Your instructor for this course is\n%s!\n\n",
        getCourseName() );
}

}

【问题讨论】:

  • 班级是 GradeBook。但它不会让我粘贴所有代码。你能帮我写完整的代码吗?
  • 编辑您的问题并添加剩余的代码。
  • 这是另一篇 public GradeBook( String name ) { courseName = name; } 公共无效 setInstructorName( 字符串 nameIns ) { InstructorName = nameIns; } public void setCourseName(String name) { courseName = name; } 公共字符串 getInstructorName() { 返回讲师姓名;
  • 错误是构造函数 GradeBook(string) 已经被声明为类成绩册。仅当我为 insstructor 添加第二个字符串并添加新函数 GradeBook( String nameIns ) 等时

标签: java string variables instance


【解决方案1】:

From the Java Language Specification

声明两个构造函数是编译时错误 类中的覆盖等效签名(第 8.4.2 节)。

如果两个方法[或构造函数]具有相同的名称并且它们具有相同的签名并且 参数类型。

在您的情况下,您有两个构造函数,它们采用String 类型的一个参数。换句话说,您有两个具有相同签名的构造函数,编译器不允许这样做。

要么使用一个带有两个String 参数的构造函数,要么使用setter。

【讨论】:

  • 谢谢老兄,我真的很陌生,只在第 3 章。你能告诉我如何让 1 个构造函数接受 2 个字符串吗?然后我可以完成程序。因为这本书没有涵盖。也是二传手?我在代码中添加了一个setCourseName,是一样的吗?
  • 我真的不想在做教程的时候再做一个教程:\你能帮我吗?我不必经历所有这些,否则我会迷失方向
  • @user 你知道什么是方法参数(或者在这种情况下是构造函数参数)吗?只需用逗号分隔它们。如果你的教程没有显示,是时候阅读我链接的那个了。
  • 我只需要知道如何在 1 个班级中使用 2 个字符串,因为它是相同的“班级成绩册(字符串)已经在某处声明
【解决方案2】:
public GradeBook ( String name )
{
    courseName = name; 
}

public GradeBook ( String name )
{
    instructorName = name; 
}

虽然您在构造函数中为 2 个不同的实例变量赋值,但对于 JVM,它具有相同的签名。您不能有 2 个具有相同签名的构造函数。 您要么必须创建一个请求 2 个参数的构造函数,要么为两个实例变量分配相同的值

    public GradeBook ( String cName, String iName )
    {
        courseName = cName; 
        instructorName = iName; 
    }

【讨论】:

    猜你喜欢
    • 2012-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-25
    相关资源
    最近更新 更多